有一种幻想出来的生物叫幻想的物种(不会死亡),幼年时候叫小幻,成年的时候叫大幻,小幻经过一年才能变成大幻,大幻拥有繁殖能力每年能分裂出一个小幻。
请问:一开始只有1只小幻,经过年数为167年时 一共的多少只幻想的物种?
有一种幻想出来的生物叫幻想的物种(不会死亡),幼年时候叫小幻,成年的时候叫大幻,小幻经过一年才能变成大幻,大幻拥有繁殖能力每年能分裂出一个小幻。
请问:一开始只有1只小幻,经过年数为167年时 一共的多少只幻想的物种?
这是典型的斐波那契数列问题。这里使用循环来解决:
function fib(year){
if(year == 1 || year == 2){
console.log("1");
}else{
var magicBeast = [1,1];
for(var i = 2; i < year; i++){
magicBeast.push(magicBeast[i-1]+magicBeast[i-2]);
}
console.log(magicBeast[magicBeast.length-1]);
}
}
fib(167);
循环一下就得到了
var aa=function(x,y,z){//x是小,y是大,z是年份
for(var i=0;i<z;i++){
var m=x;
x=y;
y=m+y;
//x=[y,y=y+x][0]
}
console.log(x,y,z)
}
aa(1,0,6)
但是 js 可以尾递归啊,蛤蛤
function fib(n) {
'use strict';
if (n === 1 || n === 2) return 1;
return tail(n, 1, 1, 3);
function tail(n, b1, b2, begin) {
if (n === begin) return b1 + b2;
return tail(n, b2, b1 + b2, begin + 1);
}
}
fib(167);
1 回答851 阅读✓ 已解决
1 回答1.1k 阅读
2 回答773 阅读
2 回答617 阅读
2 回答601 阅读
1 回答678 阅读
2 回答520 阅读
第一年:1大0小
第二年:1大1小
第三年:2大1小
第四年:3大2小
第五年:5大3小
第六年:8大5小
第七年:13大8小
...
大幻的增长呈斐波那契数列
经过年数为167年时 一共有fibonacci(167)只幻想的物种