Java方法之递归思想
学习Demo
递归【基于栈】:A方法调用A方法(自己调用自己)
递归结构包括两部分:
1. 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
2. 递归体:什么时候需要调用自身方法。
注:适用于计算量小的情况 耗时 影响性能
码上行动
package TestDemo; /** * 递归【基于栈】:A方法调用A方法(自己调用自己) * 递归结构包括两部分: * 1. 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。 * 2. 递归体:什么时候需要调用自身方法。 * 实例:阶乘的计算【适用于计算量小的情况】耗时 影响性能 */ public class Test4 { /* 阶乘:n!=1×2×3×...×(n-1)×n 阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。 1! 1 2! 2*1 3! 3*2*1 5! 5*4*3*2*1 0的阶乘是1,1的阶乘是1本身 */ public static void main(String[] args) { System.out.println(f(5)); } /* 递归思想 2! 2 * f(1) 2 * 1 3! 3 * f(2) 3 * 2 * f(1) 3 * 2 * 1 */ public static int f(int n){ if (n == 1) { return 1; }else{ return n * f(n-1); } } }