java基礎演算法之兔子總數__演算法

來源:互聯網
上載者:User

package mr.y.arithmetic;
/**
*
* 有一對兔子,從出生後第3個月起每個月都生一對兔子,
* 小兔子長到第三個月後每個月又生一對兔子,假如兔子
* 都不死,問每個月的兔子總數為多少。
*
*
*問題分析:
* 月數: 1 2 3 4 5 6 7 8 …
* 兔子: 1 1 2 3 5 8 13 21…
*
* 規律很明顯,n月兔子數 = (n-1)兔子數+(n-2)兔子數 其中 n>2
* 但是我們要理解規律為什麼是這樣。
*
* 假設 我們要算 第n個月兔子的 總數, 那麼應該是這樣
* 上個月兔子總數 + 這個月出生的兔子總數
* 上個月兔子總數 應該是 n-1月的兔子數
* 這個月出生的兔子總數應該怎麼獲得。 根據題目可知道, 這個月能生育的兔子 應該是最少生長了2個月了,
* 所以2個月前出生的兔子到這個月都會生下1對兔子 ,那麼兩個月前 有多少對 兔子。結果很明顯了
*
*/
public class TestRabbit {
public static void main(String[] args) {
System.out.println(getRabbitCount(3));

}public static long getRabbitCount(long n){      if(n<1){        return 0;    }    if(n<3){        return 1*2;    }    long sum1 = 1;    long sum2 = 1;    long sum = 0;    for(long i=3; i<n+1; i++){        sum = sum1+sum2;        sum2 = sum1;        sum1 = sum;    }    return sum*2;}

}

/**
* 程式結束, 如果有誤, 還望大神指導 時間:2017年1月9日17:40:59
*/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.