面试题:有一对兔子,从出生后第3个月起每月都生一对小兔子,小兔子长到第3个月后每个月又生一对小兔子,按此规律,假设兔子没有死亡,第一个月有一对刚出生的小兔子,问第20个月有多少只兔子?
解题思路:第一个月1对兔子也就是2只,第二个月2只兔子,第三个月4只兔子,第五个月6只兔子,第六个月......
public class ArrayList09 {
public static void main(String[] args) {
for (int i =1;i<=20;i++){ //i月份
System.out.println("第"+i+"个月的兔子有:"+f(i)+"只");
}
}
public static int f(int m){
if (m==1){
return 2;
}
if (m==2){
return 2;
}else{
return f(m-1)+f(m-2);
}
}
}
什么是递归算法:在函数或子过程的内部,直接或者间接地调用自己的算法 (简称自己调用自己)
下面拿阶乘举例: 4! 就是 4*3*2*1 3! 就是3*2*1
public class Demo05 {
public static void main(String[] args) {
System.out.println(f(5));
}
//递归 5的阶乘就是 5*4*3*2*1
public static int f(int n){
if (n==1){
return 1;
}else{
return n*f(n-1); //当n不等于1的时候就会乘于n-1
}
}
}