递归:
(1)明确要干什么
例:求n!的阶乘
//计算n的阶乘
int f(int n){
}
(2)找到递归的结束条件
要找出参数为什么时,递归结束,之后可以直接把结果返回
n=1时,1!=1
//计算n的阶乘(n>0)
public static int f(int n) {
if(n==1) {
return 1;
}
n=2时,2!=2*1
因此把n=1和n=2的情况合并
//计算n的阶乘(n>0)
public static int f(int n) {
if(n<=2) {
return n;
}
(3)缩小参数范围,自己调用自己
找到原函数的等价关系式:
f(n)=f(n-1)*n
从而使范围从n变成n-1
public class Test1 {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
System.out.println("请输入n:");
int n=cin.nextInt();
int x=f(n);
System.out.println(x);
}
//计算n的阶乘(n>0)
public static int f(int n) {
if(n<=2) {
return n;
}
return f(n-1)*n;
}
}