真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java語(yǔ)言中如何解決求兔子問(wèn)題

小編給大家分享一下java語(yǔ)言中如何解決求兔子問(wèn)題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、成都網(wǎng)站制作與策劃設(shè)計(jì),云浮網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:云浮等地區(qū)。云浮做網(wǎng)站價(jià)格咨詢:028-86922220

1、思考

兔子問(wèn)題,是費(fèi)氏數(shù)列的形象化說(shuō)法,它是由一位名為Fibonacci的數(shù)學(xué)家在它的著作中提出的一個(gè)問(wèn)題。

2、描述

它體術(shù)的問(wèn)題是:若有一只免子每個(gè)月生一只小免子,一個(gè)月后小免子也開始生產(chǎn)。起初只有一只免子,一個(gè)月后就有兩只免子,二個(gè)月后有三只免子,三個(gè)月后有五只免子(小免子投入生產(chǎn))......

我們使用數(shù)學(xué)的方式表達(dá)出來(lái),便是下面的一組數(shù)列:

1、1、2、3、5、8、13、21、34、55、89......

注意:新生的小免子需一個(gè)月成長(zhǎng)期才會(huì)投入生產(chǎn)!而且這些兔子是不死的哦?。?!

3、規(guī)律

當(dāng)我們莫名其妙的接觸到這個(gè)問(wèn)題的時(shí)候,很難找到其中的規(guī)律,但是依照數(shù)學(xué)中數(shù)列的規(guī)律去思考這個(gè)問(wèn)題,等比?等差?還是其它什么?既然這是一個(gè)由數(shù)學(xué)家提出的問(wèn)題,那么其中應(yīng)該有一定的數(shù)學(xué)規(guī)律吧?到底是什么規(guī)律呢,仔細(xì)分析上面的一組數(shù)列,相比你已經(jīng)有了答案了。沒(méi)錯(cuò),它用一句話來(lái)表述,從第三項(xiàng)開始,前面兩項(xiàng)的和等于第三項(xiàng)。

假設(shè)第n項(xiàng)的數(shù)值為fn,那么該數(shù)列的規(guī)律性使用數(shù)學(xué)公式表達(dá)如下:

4、偽代碼

所謂偽代碼,就是不是真的代碼,它并不能在機(jī)器上執(zhí)行,只是一段介于自然語(yǔ)言和編程語(yǔ)言之間的一種表達(dá)程序邏輯的有意義的符號(hào)。對(duì)于兔子問(wèn)題的偽代碼,我們這里使用上述公式的遞歸方式,可以有以下的偽代碼:

Procedure FIB(N) [ 
  IF (N < 0)  
    PRINT ("輸入錯(cuò)誤");  
 
  IF (N = 0 OR N = 1)  
    RETURN (N);  
  ELSE  
    RETURN ( FIB(N-1) + FIB(N-2) );  
]

根據(jù)之前文章所描述的遞歸概念,詳細(xì)情況可以參考之前的《漢諾塔問(wèn)題》,相比大家對(duì)遞歸已經(jīng)不會(huì)太陌生,那么根據(jù)上述我們得到的數(shù)學(xué)公式,推演出這樣的遞歸偽代碼,會(huì)非常簡(jiǎn)潔明了。但是,額,可能大家猜到了,我要說(shuō)但是。大家是否發(fā)現(xiàn)一個(gè)問(wèn)題,當(dāng)我們的n值過(guò)大的時(shí)候,程序會(huì)比較慢?

如果你發(fā)現(xiàn)了,說(shuō)明你認(rèn)真思考了這個(gè)問(wèn)題,相比你也應(yīng)該解決了心中的疑惑。如果還有沒(méi)有解決疑惑的,就隨著我來(lái)解決大家的疑惑。為什么會(huì)比較慢呢?原因在于,當(dāng)我們計(jì)算后面的第n項(xiàng)的時(shí)候,需要再次計(jì)算n-1和n-2項(xiàng),而這兩項(xiàng)在之前都是已經(jīng)被計(jì)算過(guò)了的,我們?cè)偾蠛竺娴囊粋€(gè)數(shù)的時(shí)候,還是要在計(jì)算一邊,無(wú)形之中,我們就多做了很多無(wú)用功。

那么,我們時(shí)候有好的方法去解決這個(gè)問(wèn)題呢?答案是有的。根據(jù)上面的分析,當(dāng)我們?cè)谇蠼獾趎項(xiàng)的時(shí)候,前面n-1和n-2項(xiàng)是已經(jīng)求解過(guò)的,那么,為什么我們不把它存起來(lái)呀????

哈哈,有沒(méi)有瞬間豁然開朗,對(duì)呀!我們這里是使用空間換時(shí)間,可以大大提高效率哦!這里我就不寫偽代碼了。

5、代碼

好了,關(guān)子賣完了,直接上代碼:

public class Fibonacci { 
  public static void main(String[] args) { 
    int[] fib = new int[20];  
 
    fib[0] = 0;  
    fib[1] = 1;  
 
    for(int i = 2; i < fib.length; i++) { 
      fib[i] = fib[i-1] + fib[i-2];  
    } 
 
    for(int i = 0; i < fib.length; i++){  
      System.out.print(fib[i] + " ");  
    } 
    System.out.println(); 
  } 
}

以上是“java語(yǔ)言中如何解決求兔子問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)題目:java語(yǔ)言中如何解決求兔子問(wèn)題
瀏覽路徑:http://weahome.cn/article/jgjjhh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部