public static void main(String[] args) {
//每个兔子的对数1,1,2,3,5,8...
//求20个兔子的对数
int[] arr = new int[20];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i < arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
System.out.println(arr[19]);
//System.out.println(f(20));
//用递归的方法计算
System.out.println(f(20));
}
//递归解决问题
//1、定义一个方法f(n):n表示第n个月的兔子对数,那么第n-1个月兔子对数则表示为f(n-1)
//StackOverflowError
public static int f(int n) {
//对n进行判断,给递归一个出口
if(n==1||n==2){
return 1;
}else {
return f(n - 1) + f(n - 2);
}
}
}
递归求阶乘
public static void main(String[] args) {
int n = 5;
int number = f(5);
System.out.println(number);
}
//递归求阶乘
public static int f(int n) {
if (n == 1 ) {
return 1;
} else {
return n * f(n - 1);
}
}