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

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

 

分析:

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

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、a3a4;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));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值