学习 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);
}
}
}