中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java語言中如何解決求兔子問題

發布時間:2021-08-04 10:20:38 來源:億速云 閱讀:106 作者:小新 欄目:編程語言

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

1、思考

兔子問題,是費氏數列的形象化說法,它是由一位名為Fibonacci的數學家在它的著作中提出的一個問題。

2、描述

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

我們使用數學的方式表達出來,便是下面的一組數列:

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

注意:新生的小免子需一個月成長期才會投入生產!而且這些兔子是不死的哦!!!

3、規律

當我們莫名其妙的接觸到這個問題的時候,很難找到其中的規律,但是依照數學中數列的規律去思考這個問題,等比?等差?還是其它什么?既然這是一個由數學家提出的問題,那么其中應該有一定的數學規律吧?到底是什么規律呢,仔細分析上面的一組數列,相比你已經有了答案了。沒錯,它用一句話來表述,從第三項開始,前面兩項的和等于第三項。

假設第n項的數值為fn,那么該數列的規律性使用數學公式表達如下:

4、偽代碼

所謂偽代碼,就是不是真的代碼,它并不能在機器上執行,只是一段介于自然語言和編程語言之間的一種表達程序邏輯的有意義的符號。對于兔子問題的偽代碼,我們這里使用上述公式的遞歸方式,可以有以下的偽代碼:

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

根據之前文章所描述的遞歸概念,詳細情況可以參考之前的《漢諾塔問題》,相比大家對遞歸已經不會太陌生,那么根據上述我們得到的數學公式,推演出這樣的遞歸偽代碼,會非常簡潔明了。但是,額,可能大家猜到了,我要說但是。大家是否發現一個問題,當我們的n值過大的時候,程序會比較慢?

如果你發現了,說明你認真思考了這個問題,相比你也應該解決了心中的疑惑。如果還有沒有解決疑惑的,就隨著我來解決大家的疑惑。為什么會比較慢呢?原因在于,當我們計算后面的第n項的時候,需要再次計算n-1和n-2項,而這兩項在之前都是已經被計算過了的,我們再求后面的一個數的時候,還是要在計算一邊,無形之中,我們就多做了很多無用功。

那么,我們時候有好的方法去解決這個問題呢?答案是有的。根據上面的分析,當我們在求解第n項的時候,前面n-1和n-2項是已經求解過的,那么,為什么我們不把它存起來呀????

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

5、代碼

好了,關子賣完了,直接上代碼:

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語言中如何解決求兔子問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

焦作市| 玉屏| 安康市| 金乡县| 宝坻区| 吐鲁番市| 阜城县| 巴彦县| 青海省| 洪江市| 台湾省| 永丰县| 哈巴河县| 湖口县| 湘潭县| 瑞丽市| 台北市| 崇礼县| 万年县| 洪湖市| 宁陵县| 韶山市| 德保县| 安阳市| 广汉市| 彝良县| 垫江县| 偃师市| 五常市| 昌黎县| 措美县| 漳州市| 翼城县| 小金县| 大安市| 闵行区| 宁南县| 资溪县| 锦屏县| 博客| 舞阳县|