JAVA程式設計題-用java解決兔子問題

03ngnntds發表於2019-04-25

題目:古典問題:有一對兔子,從出生後第 3 個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

解答:

分析:從第一對兔子開始,第1個月1對兔子,由於“長到第三個月後每個月又生一對兔子”,所以第2個月也是1對兔子,第3個月時可以生一對兔子,所以總數為2對,這時,其中有一對是以後每個月都可以生一對兔子的老兔子,另一對是一對新兔子,它只有在第三個月的時候才可以每個月生一對兔子;這樣的話,第4個月的兔子總數為3對,…以此類推,從第1個月到第12個月的兔子對總數分別為:1,1,2,3,5,8,13,21,34,55,89,144。。。。。

這是一個典型的斐波那契數列。

由於每對新兔子隔一個月才可以生新一對兔子, 每月的兔子對總數為前兩個月的兔子對數之和。

(方法一)利用java程式設計基本實現,程式設計如下:

在這裡插入圖片描述
程式碼實現如下:

public class RabbitDemo {

public static void main(String[] args) {

int amount; //每個月的兔子總數

int nAmount = 1; //第一個月的兔子數量

int oAmount = 1; //第二個月的兔子數量

for(int i=1;i<=2;i++){

amount=1;

System.out.println(“第” + i + “個月的兔子總是為:” + amount);

}

for(int i=3;i<=12; i++) {

amount = oAmount + nAmount;

oAmount = nAmount;

nAmount = amount;

System.out.println(“第” + i + “個月的兔子總是為:” + amount);

}

}

}

(方法二)利用遞迴的方法來解決斐波那契數列:
在這裡插入圖片描述

程式碼實現如下:

import java.util.Scanner;

public class RabbitDemo {

public static void main(String[] args) {

System.out.println(“輸入月份”);

Scanner s = new Scanner( );

int month = s.nextInt();

System.out.println(“第” + month + “個月的兔子總是為”+getNum(month));

}

public static int getNum(int month){

if(month == 1 || month == 2){

return 1;

}else{

return getNum(month-1)+getNum(month-2);

}

}

}

文章來源:搜尋引擎大全


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69911024/viewspace-2642461/,如需轉載,請註明出處,否則將追究法律責任。

相關文章