1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 斐波那契数列 又称兔子数列

斐波那契数列 又称兔子数列

时间:2021-11-18 18:42:57

相关推荐

斐波那契数列 又称兔子数列

一般而言,兔子在出生二个月后,就有繁殖能力(即如果是第一个月出生,则第三个月开始才能繁殖),一对兔子每个月能生出一对小兔子。如果所有兔子都不死,那么一对兔子一年内能繁殖成多少对兔子?

分析:

(红色表示该对兔子本月不可生)

1、第1个月,只有一对兔子 a,数量为 1

2、第2个月,原兔子下月才能生,只有一对兔子 a ,则数量为 1

3、第3个月,原兔子 a 生出一对小兔 a1,则数量为 2

4、第4个月,原有兔子 a 和 a1;a 生一对小兔 a2,则数量为 3

5、第5个月,原有兔子 a、a1、a2;a 和 a1 各生下一对,分别为 a3 和 a4,则数量为 5

6、第6个月,原有兔子 a、a1、a2、a3、a4;a、a1、a2各生下一对为a5、a6、a7,则数量为 8

7、第7个月,原有兔子 a、a1、a2、a3、a4、a5、a6、a7;a、a1、a2、a3、a4各生下一对为a8、a9、a10、a11、a12,则数量为13

以此类推,可以得出如下数据:

月数:1---2---3---4---5---6---7---8---9---10---11---12

对数:1---1---2---3---5---8--13--21--34--55--89--144

每个月所呈现的兔子数构成了一个数列,这个数列的特点就是相邻两项的和构成了后一项的值。

顺推法实现如下:

var fibfunc = function(n) {var arr = [];for(var i=0; i<n; ++i) {if(i === 0 || i === 1) {arr.push(1);} else {arr.push(arr[i-1] + arr[i-2]);}}return arr[n-1];}//输入月数console.log(fibfunc(9));

递归法实现如下:

var fibfunc = function(n) {var sum = 0;if(n === 0 || n === 1) {return n;} else {return fibfunc(n-1) + fibfunc(n-2);}}//输入月数console.log(fibfunc(9));

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。