激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java語言求解兔子問題代碼分析

java語言求解兔子問題代碼分析

2021-02-25 22:49ljtyzhr Java教程

這篇文章主要介紹了Java語言求解兔子問題代碼分析,具有一定借鑒價值,需要的朋友可以了解下。

1、思考

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

2、描述

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

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

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

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

3、規律

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

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

4、偽代碼

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

java" id="highlighter_298363">
?
1
2
3
4
5
6
7
8
9
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、代碼

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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();
  }
}

6、思考

這里,我們提出一個思考題,如果兔子它不是生一個兔子,生多個兔子,該怎么求解?當然,我們說的生多個就是定數,不會一個兔子生得多,一個兔子生的少,不然那樣就沒法求解了。

這里就不上代碼了,大家可以自己在網上查找一下合適的資源,看看如何求解。

總結

以上就是本文關于Java語言求解兔子問題代碼分析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出!

原文鏈接:http://blog.csdn.net/ljtyzhr/article/details/39157163

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产中出视频 | 韩国精品视频在线观看 | 未成年人在线观看 | 日本a级一区 | 国产三级在线观看a | 中文字幕www| 中国免费一级毛片 | 99精美视频 | 鲁丝一区二区二区四区 | 日本一区二区精品视频 | 麻豆19禁国产青草精品 | 久久91久久久久麻豆精品 | 国产精品中文在线 | 中文在线日韩 | 成人黄色小视频网站 | 九九热精品视频在线免费观看 | 日本xxxx色视频在线观看免费, | 毛片在线播放视频 | 久久久久无码国产精品一区 | 一级毛片在线观看视频 | 日本黄肉网站在线观看 | 亚洲天堂中文字幕在线观看 | 欧美日比视频 | 欧美国产一区二区三区激情无套 | 免费看毛片网站 | 2019中文字幕在线播放 | 久久久新| 国产精品免费小视频 | 精品视频在线免费看 | 成人在线观看网 | 日本一区二区免费在线观看 | 日本一区二区在线 | 欧美成人a | 欧美激情 在线播放 | 成人毛片免费网站 | 在线日韩av电影 | 国产一级在线看 | 一级电影在线观看 | 成人一区二区三区四区 | 欧洲亚洲激情 | 久久国产一二三 |