天天看點

java基礎進階-無敵神兔,發财緻富2年上百萬!

無敵神兔問題

描述:

在理想狀态下,一對兔子喂養到第三個月開始,每個月就會産下一對兔子。

農夫從第一個月開始喂養1對,那麼到第n個月的時候,兔子有多少對?

當然,我們的理想狀态下是兔子不死,并且從喂養的第3個月開始都能生。

要求:

輸入一個數n,輸出第n個月的兔子對數。

思路:

我們先枚舉法列出每個月兔子的情況:

1,1,2,3,5,8,13,21…

因為兔子喂養到第3個月的時候是可以生新兔子的,是以我們可以得出:

第一:目前月份的兔子數并不是上個月的2倍,因為上個月新增的兔子是不能生的。

第二:上個月兔子的新增數=上個月的兔子數-上上個月的兔子數 a[n-1]新增 = a[n-1]-a[n-2];(n>2)

第三:目前月份的兔子數=2倍上個月的兔子數-上個月兔子的新增數 a[n] = 2[n-1]-a[n-1]新增 = a[n-1]+a[n-2]

也就可以得出規律,目前月份的兔子數=上個月+上上個月

上代碼…

import java.util.Scanner;
public class GodRabbit {
    public static void main(String[] args) {
        //建立對象
        Scanner sc = new Scanner(System.in);
        //接收對象
        System.out.println("發财緻富在這裡,老闆,你想知道第幾個月的兔子對數?");
        int n = sc.nextInt();
        //定義變量,記錄一下目前的兔子總對數
        int sum = 0;
        //開辟對應數組記憶體空間,用來記錄某個月的兔子對數
        int[] rabbbitArr = new int[n];
        //初始化前兩個月的兔子對數
        sum=rabbbitArr[0]=rabbbitArr[1]=1;
        //進入循環指派
        for(int i = 2;i<n;i++){
            rabbbitArr[i]=rabbbitArr[i-1]+rabbbitArr[i-2];
            sum=rabbbitArr[i];
        }
        //輸出結果
        System.out.println("老闆,第"+n+"個月的時候您就有 "+sum+" 對兔子了!");
        System.out.println("我們算一算,就算一對兔子20塊,我們花費20塊成本買一對兔子養,那"+sum+"對兔子就是"+20*sum+"塊!!");
        System.out.println("發财緻富經啊,2年變百萬富翁,讓我們一起來養兔子吧!!");
    }
}

           
java基礎進階-無敵神兔,發财緻富2年上百萬!

扯淡問題:

如果一對兔子要第4個月才能生下一對兔子,并且一對兔子的生命周期隻有12個月,即到了第12個月的時候就會死去,那麼要想變為百萬大款,我們需要養多少個月的兔子?