無敵神兔問題
描述:
在理想狀态下,一對兔子喂養到第三個月開始,每個月就會産下一對兔子。
農夫從第一個月開始喂養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年變百萬富翁,讓我們一起來養兔子吧!!");
}
}

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