递归二:求老鼠生孩子问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归二:求老鼠生孩子问题相关的知识,希望对你有一定的参考价值。
有一对老鼠,它每一个月产一对小老鼠,小老鼠在3个月后成年,又将生产小老鼠。 问3年后,总共会有多少只老鼠,不计老鼠死亡
第1个月后情况:
有成年鼠:1对 新生的老鼠:1对
有一个月大的老鼠:0对 二个月大的老鼠:0对
第1月后共有老鼠:2对
第2个月后情况:
有成年鼠:1对 新生的老鼠:1对
有一个月大的老鼠:1对 二个月大的老鼠:0对
第2月后共有老鼠:3对
第3个月后情况:
有成年鼠:1对 新生的老鼠:1对
有一个月大的老鼠:1对 二个月大的老鼠:1对
第3月后共有老鼠:4对
第4个月后情况:
有成年鼠:2对 新生的老鼠:2对
有一个月大的老鼠:1对 二个月大的老鼠:1对
第4月后共有老鼠:6对
第5个月后情况:
有成年鼠:3对 新生的老鼠:3对
有一个月大的老鼠:2对 二个月大的老鼠:1对
第5月后共有老鼠:9对
第6个月后情况:
有成年鼠:4对 新生的老鼠:4对
有一个月大的老鼠:3对 二个月大的老鼠:2对
第6月后共有老鼠:13对
第7个月后情况:
有成年鼠:6对 新生的老鼠:6对
有一个月大的老鼠:4对 二个月大的老鼠:3对
第7月后共有老鼠:19对
第8个月后情况:
有成年鼠:9对 新生的老鼠:9对
有一个月大的老鼠:6对 二个月大的老鼠:4对
第8月后共有老鼠:28对
第9个月后情况:
有成年鼠:13对 新生的老鼠:13对
有一个月大的老鼠:9对 二个月大的老鼠:6对
第9月后共有老鼠:41对
第10个月后情况:
有成年鼠:19对 新生的老鼠:19对
有一个月大的老鼠:13对 二个月大的老鼠:9对
第10月后共有老鼠:60对
第11个月后情况:
有成年鼠:28对 新生的老鼠:28对
有一个月大的老鼠:19对 二个月大的老鼠:13对
第11月后共有老鼠:88对
第12个月后情况:
有成年鼠:41对 新生的老鼠:41对
有一个月大的老鼠:28对 二个月大的老鼠:19对
第12月后共有老鼠:129对
第13个月后情况:
有成年鼠:60对 新生的老鼠:60对
有一个月大的老鼠:41对 二个月大的老鼠:28对
第13月后共有老鼠:189对
第14个月后情况:
有成年鼠:88对 新生的老鼠:88对
有一个月大的老鼠:60对 二个月大的老鼠:41对
第14月后共有老鼠:277对
第15个月后情况:
有成年鼠:129对 新生的老鼠:129对
有一个月大的老鼠:88对 二个月大的老鼠:60对
第15月后共有老鼠:406对
第16个月后情况:
有成年鼠:189对 新生的老鼠:189对
有一个月大的老鼠:129对 二个月大的老鼠:88对
第16月后共有老鼠:595对
第17个月后情况:
有成年鼠:277对 新生的老鼠:277对
有一个月大的老鼠:189对 二个月大的老鼠:129对
第17月后共有老鼠:872对
第18个月后情况:
有成年鼠:406对 新生的老鼠:406对
有一个月大的老鼠:277对 二个月大的老鼠:189对
第18月后共有老鼠:1278对
第19个月后情况:
有成年鼠:595对 新生的老鼠:595对
有一个月大的老鼠:406对 二个月大的老鼠:277对
第19月后共有老鼠:1873对
第20个月后情况:
有成年鼠:872对 新生的老鼠:872对
有一个月大的老鼠:595对 二个月大的老鼠:406对
第20月后共有老鼠:2745对
第21个月后情况:
有成年鼠:1278对 新生的老鼠:1278对
有一个月大的老鼠:872对 二个月大的老鼠:595对
第21月后共有老鼠:4023对
第22个月后情况:
有成年鼠:1873对 新生的老鼠:1873对
有一个月大的老鼠:1278对 二个月大的老鼠:872对
第22月后共有老鼠:5896对
第23个月后情况:
有成年鼠:2745对 新生的老鼠:2745对
有一个月大的老鼠:1873对 二个月大的老鼠:1278对
第23月后共有老鼠:8641对
第24个月后情况:
有成年鼠:4023对 新生的老鼠:4023对
有一个月大的老鼠:2745对 二个月大的老鼠:1873对
第24月后共有老鼠:12664对
第25个月后情况:
有成年鼠:5896对 新生的老鼠:5896对
有一个月大的老鼠:4023对 二个月大的老鼠:2745对
第25月后共有老鼠:18560对
第26个月后情况:
有成年鼠:8641对 新生的老鼠:8641对
有一个月大的老鼠:5896对 二个月大的老鼠:4023对
第26月后共有老鼠:27201对
第27个月后情况:
有成年鼠:12664对 新生的老鼠:12664对
有一个月大的老鼠:8641对 二个月大的老鼠:5896对
第27月后共有老鼠:39865对
第28个月后情况:
有成年鼠:18560对 新生的老鼠:18560对
有一个月大的老鼠:12664对 二个月大的老鼠:8641对
第28月后共有老鼠:58425对
第29个月后情况:
有成年鼠:27201对 新生的老鼠:27201对
有一个月大的老鼠:18560对 二个月大的老鼠:12664对
第29月后共有老鼠:85626对
第30个月后情况:
有成年鼠:39865对 新生的老鼠:39865对
有一个月大的老鼠:27201对 二个月大的老鼠:18560对
第30月后共有老鼠:125491对
第31个月后情况:
有成年鼠:58425对 新生的老鼠:58425对
有一个月大的老鼠:39865对 二个月大的老鼠:27201对
第31月后共有老鼠:183916对
第32个月后情况:
有成年鼠:85626对 新生的老鼠:85626对
有一个月大的老鼠:58425对 二个月大的老鼠:39865对
第32月后共有老鼠:269542对
第33个月后情况:
有成年鼠:125491对 新生的老鼠:125491对
有一个月大的老鼠:85626对 二个月大的老鼠:58425对
第33月后共有老鼠:395033对
第34个月后情况:
有成年鼠:183916对 新生的老鼠:183916对
有一个月大的老鼠:125491对 二个月大的老鼠:85626对
第34月后共有老鼠:578949对
第35个月后情况:
有成年鼠:269542对 新生的老鼠:269542对
有一个月大的老鼠:183916对 二个月大的老鼠:125491对
第35月后共有老鼠:848491对
第36个月后情况:
有成年鼠:395033对 新生的老鼠:395033对
有一个月大的老鼠:269542对 二个月大的老鼠:183916对
第36月后共有老鼠:1243524对
分析:这个问题用循环做可能时间会用得久一点,但是也很好做,不过用递归做明显会更加简单,只要找到后面一个数跟前面数之间的联系就行了,这个问题其实最难之处就是找规律了,只要规律找到了写代码就只是顺手拈来的事情了。
public class Test {
private static int sum;
public static void main(String[] args) {
System.out.println(fibonacci(36));
}
private static int fibonacci(int i) {
if(i==0)
sum = 2;
if(i==1)
sum = 2;
if(i==2)
sum = 3;
if(i==3)
sum = 4;
if(i==4)
sum = 6;
if(i>=5)
sum = fibonacci(i-2)+fibonacci(i-3)+fibonacci(i-4);
return sum;
}
}
以上是关于递归二:求老鼠生孩子问题的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript - 代码片段,Snippets,Gist