程序书算法精题–JS版
- 古典问题: 有一对兔子, 从出生后第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死, 问每个月的兔子总数为多少?
分析
- 列出1到11个月情况: 1 1 2 3 5 8 13 21 34 55 89 144;
- 由1可得, 为斐波那契数列;
- 从第三个数开始, 往后每个数都是前2个数之和.
注意
这里,为了方便, 每个月的兔子总数以对数为基准,即每个月有多少对兔子.
源码
let k;
let yi = 1;
let er = 1;
let san;
function fibonacci(k) {
if (k == 1 || k == 2) {
console.log(1);
}
if (k >= 3) {
for (let i = 3; i <= k; i++) {
san = yi + er;
yi = er;
er = san;
}
console.log(san);
}
}
fibonacci(12);
console