第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Java遞歸斐波那契序列

Java遞歸斐波那契序列

達(dá)令說(shuō) 2019-10-15 11:09:10
請(qǐng)解釋以下簡(jiǎn)單代碼:public int fibonacci(int n)  {    if(n == 0)        return 0;    else if(n == 1)      return 1;   else      return fibonacci(n - 1) + fibonacci(n - 2);}我對(duì)最后一行感到困惑,尤其是因?yàn)槔?,如果n = 5,則將調(diào)用fibonacci(4)+ fibonacci(3),依此類推,但我不明白該算法如何以此來(lái)計(jì)算索引5的值方法。請(qǐng)?jiān)敿?xì)解釋!
查看完整描述

3 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

在斐波那契數(shù)列中,每一項(xiàng)都是前兩項(xiàng)的總和。因此,您編寫了一個(gè)遞歸算法。


所以,


fibonacci(5) = fibonacci(4) + fibonacci(3)


fibonacci(3) = fibonacci(2) + fibonacci(1)


fibonacci(4) = fibonacci(3) + fibonacci(2)


fibonacci(2) = fibonacci(1) + fibonacci(0)

現(xiàn)在您已經(jīng)知道了fibonacci(1)==1 and fibonacci(0) == 0。因此,您可以隨后計(jì)算其他值。


現(xiàn)在,


fibonacci(2) = 1+0 = 1

fibonacci(3) = 1+1 = 2

fibonacci(4) = 2+1 = 3

fibonacci(5) = 3+2 = 5

從斐波那契數(shù)列中0,1,1,2,3,5,8,13,21....我們可以看到5th element斐波那契數(shù)列返回了5。


查看完整回答
反對(duì) 回復(fù) 2019-10-15
?
胡說(shuō)叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊

您的代碼有2個(gè)問(wèn)題:


結(jié)果存儲(chǔ)在只能處理前48個(gè)斐波那契數(shù)字的int中,此后整數(shù)填充減位,結(jié)果是錯(cuò)誤的。

但是您永遠(yuǎn)無(wú)法運(yùn)行fibonacci(50)。

該代碼

fibonacci(n - 1) + fibonacci(n - 2)

是非常錯(cuò)誤的。

問(wèn)題是它調(diào)用斐波那契的次數(shù)不是50次,而是更多次。

首先,它 每次調(diào)用fibonacci(n)越差,就稱為fibonacci(49)+ fibonacci(48),

其次稱為fibonacci(48)+ fibonacci(47)和fibonacci(47)+ fibonacci(46)

,因此復(fù)雜度是指數(shù)級(jí)的。 

http://img1.sycdn.imooc.com//5da5389a00014df502520472.jpg

非遞歸代碼的方法:


 double fibbonaci(int n){

    double prev=0d, next=1d, result=0d;

    for (int i = 0; i < n; i++) {

        result=prev+next;

        prev=next;

        next=result;

    }

    return result;

}


查看完整回答
反對(duì) 回復(fù) 2019-10-15
?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊

在偽代碼中,其中n = 5,將發(fā)生以下情況:


斐波那契(4)+斐波那契(3)


這可分為:


(fibonacci(3)+ fibonnacci(2))+(fibonacci(2)+ fibonnacci(1))


這可分為:


(((fibonacci(2)+ fibonnacci(1))+(((fibonacci(1)+ fibonnacci(0)))+((((fibonacci(1)+ fibonnacci(0))+ 1)))


這可分為:


((((fibonacci(1)+ fibonnacci(0))+1)+((1 + 0))+((1 + 0)+1)))


這可分為:


(((((1 + 0)+1)+((1 + 0))+((1 + 0)+1)))


結(jié)果是:5


給定fibonnacci序列為1 1 2 3 5 8 ...,第5個(gè)元素為5。您可以使用相同的方法來(lái)計(jì)算其他迭代。


查看完整回答
反對(duì) 回復(fù) 2019-10-15
  • 3 回答
  • 0 關(guān)注
  • 471 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)