黑马程序员技术交流社区
标题:
古典兔子问题,用递归算法求解
[打印本页]
作者:
xanx14710
时间:
2016-3-7 11:22
标题:
古典兔子问题,用递归算法求解
有一对兔子,3个月起每个月都生一对兔子,小兔子长到第4个月后每个月又生一对兔子,假设兔子都不死,问每个月兔子总数为多少?
首先我们要明白题目的意思指的是每个月的兔子总数(这里应该是按对来计算的);我们假设将兔子分为小中大三种,兔子从出生后每三个月就生出一对兔子,那么我们假定第一个月为小兔子,第二个月为中兔子,第三个月之后就为老兔子(老兔子每过三个月还会再生的),那么第一个月分别有1、0、0,第二个月分别为0、1、0,第三个月分别为1、0、1,第四个月分别为,1、1、1,第五个月分别为2、1、2,第六个月分别为3、2、3,第七个月分别为5、3、5……
兔子总数分别为:1、1、2、3、5、8、13……
于是得出了一个规律,从第三个月起,后面的兔子总数都等于前面两个月的兔子总数之和。
于是有了下面的编程:
public class Demo1_String {
public static void main(String[]args){
for(int i=1;i<20;i++){
int rabbit=rabbitNum(i);
System.out.println("第"+i+"个月的兔子总数为"+rabbit);
}
}
public static int rabbitNum(int x){
int rabbit=1;
if(x==1||x==2){
return rabbit;
}else{
rabbit=rabbitNum(x-1)+rabbitNum(x-2);
return rabbit;
}
}
作者:
xanx14710
时间:
2016-3-7 11:27
不好意思,写错题了,是小兔子长到第3个月后每个月又生一对兔子
作者:
超人d咖啡也加糖
时间:
2016-3-7 11:50
雁过留声,人过留名,加油!
作者:
and4576sdo
时间:
2016-3-7 12:05
感谢楼主的分享了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2