84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
有一种幻想出来的生物叫幻想的物种(不会死亡),幼年时候叫小幻,成年的时候叫大幻,小幻经过一年才能变成大幻,大幻拥有繁殖能力每年能分裂出一个小幻。请问:一开始只有1只小幻,经过年数为167年时 一共的多少只幻想的物种?
ringa_lee
第一年:1大0小第二年:1大1小第三年:2大1小第四年:3大2小第五年:5大3小第六年:8大5小第七年:13大8小...
大幻的增长呈斐波那契数列
function fibonacci(n) { if (n === 1 || n === 2) return 1; return fibonacci(n - 1) + fibonacci(n - 2); }
经过年数为167年时 一共有fibonacci(167)只幻想的物种
我的理解是,小幻变成大幻后,当年就可以生小幻这样就是一个指数序列,第一年有1个,第二年2个,第三年4个,……
总数就是:2^166
好吧,这样貌似也不需要递归了
这是典型的斐波那契数列问题。这里使用循环来解决:
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
参见数据结构(大话数据结构有很清晰很通俗的讲解) 栈的应用一节;答案一楼加三楼正解哈~~斐波那契数列到了查找算法哪里还有重要应用,最后烂熟于心。。。。
@小俞 的递归算法,用js算不出来~
@TabWeng 的算法能得到结果,但超出了双精度数所表示的范围。
js太勉强,还是用python3 来算一个吧~
def fib_itr(n): if n<0: return None if n<=1: return (0,1)[n] a,b = 0,1 for i in range(n-1): a, b = b, a+b return b print(fib_itr(167)) 35600075545958458963222876581316753
但是 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大0小
第二年:1大1小
第三年:2大1小
第四年:3大2小
第五年:5大3小
第六年:8大5小
第七年:13大8小
...
大幻的增长呈斐波那契数列
经过年数为167年时 一共有fibonacci(167)只幻想的物种
我的理解是,小幻变成大幻后,当年就可以生小幻
这样就是一个指数序列,第一年有1个,第二年2个,第三年4个,……
总数就是:2^166
好吧,这样貌似也不需要递归了
这是典型的斐波那契数列问题。这里使用循环来解决:
循环一下就得到了
参见数据结构(大话数据结构有很清晰很通俗的讲解) 栈的应用一节;答案一楼加三楼正解哈~~斐波那契数列到了查找算法哪里还有重要应用,最后烂熟于心。。。。
@小俞 的递归算法,用js算不出来~
@TabWeng 的算法能得到结果,但超出了双精度数所表示的范围。
js太勉强,还是用python3 来算一个吧~
但是 js 可以尾递归啊,蛤蛤