經典生兔子問題——遞歸方法

例題:
有一對兔子,從出生後第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)
  }
 }
}

總結:
以上爲經典的生兔子問題,代碼很簡單,主要是遞歸的這種思路。
對於這種遞歸的思想,大家可以詳細的看一下下面鏈接裏面的上樓梯問題,與該方法的思路是一樣的。裏面有詳細的分析過程和思路,大家可以借鑑一下。


https://blog.csdn.net/qq_44247658/article/details/106212866

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章