這道題目考察的是運(yùn)用遞歸(數(shù)列)的思路去解決問題。
創(chuàng)新互聯(lián)從2013年成立,先為海棠等服務(wù)建站,海棠等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為海棠企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
假設(shè)到第24個(gè)月,示例代碼如下:
public class woo {
public static void main(String args[]) {
System.out.println(fib(24));
}
private static int fib(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}
}
擴(kuò)展資料:
斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列、因數(shù)學(xué)家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個(gè)數(shù)列:1、1、2、3、5、8、13、21、34、……。
在數(shù)學(xué)上,斐波納契數(shù)列以如下被以遞推的方法定義:F(1)=1,F(xiàn)(2)=1, F(n)=F(n-1)+F(n-2)在現(xiàn)代物理、準(zhǔn)晶體結(jié)構(gòu)、化學(xué)等領(lǐng)域,斐波納契數(shù)列都有直接的應(yīng)用,為此,美國數(shù)學(xué)會(huì)從1963年起出版了以《斐波納契數(shù)列季刊》為名的一份數(shù)學(xué)雜志,用于專門刊載這方面的研究成果。
參考資料:
百度百科:斐波那契數(shù)列
百度百科:遞歸函數(shù)
根據(jù)你的答案,感覺題目表述有點(diǎn)問題,應(yīng)該是這樣的:有一只兔子,第三個(gè)月開始每個(gè)月生兩只兔子,剛出生的小兔子,長到第三個(gè)月開始也是每個(gè)月生兩只兔子。兔子不死,求出每個(gè)月兔子的總只數(shù)。
如果這樣就對(duì)了,f1代表初始兔子數(shù),也就是1只,f1=1。。f2代表每月兔子的總數(shù)。。f的作用純粹只是傳遞值用的。。M代表的是輸出總月數(shù),也就是月份的限制,24代表24個(gè)月,也就是打印到第24個(gè)月的兔子總數(shù)。如果改成13,那就打印到第13個(gè)月的。
這個(gè)程序輸出結(jié)果是這樣的:
第一個(gè)月兔子的對(duì)數(shù): 1
第3個(gè)月的兔子對(duì)數(shù):3
第4個(gè)月的兔子對(duì)數(shù):5
第5個(gè)月的兔子對(duì)數(shù):8
第6個(gè)月的兔子對(duì)數(shù):13
。。。
第24個(gè)月的兔子對(duì)數(shù):75025
這是斐波那契數(shù)列的問題
可以用遞歸,也可以用循環(huán)
遞歸:
public class Demo3 {
// 使用遞歸方法
private static int getFibo(int i) {
if (i == 1 || i == 2)
return 1;
else
return getFibo(i - 1) + getFibo(i - 2);
}
public static void main(String[] args) {
System.out.println("斐波那契數(shù)列的前20項(xiàng)為:");
for (int j = 1; j = 20; j++) {
System.out.print(getFibo(j) + "\t");
if (j % 5 == 0)
System.out.println();
}
}
}
循環(huán):
public class Demo2 {
// 定義數(shù)組方法
public static void main(String[] args) {
int arr[] = new int[20];
arr[0] = arr[1] = 1;
for (int i = 2; i arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
System.out.println("斐波那契數(shù)列的前20項(xiàng)如下所示:");
for (int i = 0; i arr.length; i++) {
if (i % 5 == 0)
System.out.println();
System.out.print(arr[i] + "\t");
}
}
}