例題:
有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子。假如兔子都不死,要求輸出一年內兔子的數量是多少。
分析:
該題是典型的斐波那契數列的一個實例應用。
我們可以先把前幾月的兔子數手動算出來尋找規律:
即:1 1 2 3 5 8……
由前幾個月的兔子數可以推出:f(n)= f(n-1)+f(n-2) {n 代表月份}
代碼如下:
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
while(true) {
System.out.println("請輸入需要查詢第幾個月的兔子數(退出輸入0):");
int month = scanner.nextInt();
int num = f(month);//加入遞歸循環,將得到的數給num
System.out.println("兔子數是:"+num);
}
}
//遞歸
private static int f(int month ) {
if(month ==1||month == 2) {//如果是第一月和第二月就輸出1只兔子
return 1;
}else {//否則就進入遞歸
return f(month-1)+f(month-2);//f(month)=f(month-1)+f(month-2)
}
}
}
總結:
以上爲經典的生兔子問題,代碼很簡單,主要是遞歸的這種思路。
對於這種遞歸的思想,大家可以詳細的看一下下面鏈接裏面的上樓梯問題,與該方法的思路是一樣的。裏面有詳細的分析過程和思路,大家可以借鑑一下。