記 母牛的故事 斐波那契數列(遞迴)

2021-09-28 12:26:32 字數 1086 閱讀 1950

1.母牛的故事

描述:有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第 n 年的時候,共有多少頭母牛?

輸入:輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數 n(0n=0 表示輸入資料的結束,不做處理。

輸出:對於每個測試例項,輸出在第 n年的時候母牛的數量。

每個輸出佔一行。

#include

using

namespace std;

intmain()

cout << fn << endl;}}

return0;

}

思路:

我們先列出乙個**,把每一年對應的母牛數量寫出來。

第 n年: 1 2 3 4 5 6 7 8

f[n] 頭牛: 1 2 3 4 6 9 13 19

先看第 4 年,對應有 4 頭母牛,4 = 3+1;

再看第 5 年,對應有 6 頭母牛,6 = 4+2;

最後看第 6 年,對應有 9 頭母牛,9 = 6+3;

規律:該年母牛的數量就是一年前的數量再加上三年前的數量,

用公式表示就是 f[n] = f[n-1] + f[n-3]

2.斐波那契數列

描述斐波那契數列是這樣一組有規律的數字:1、1、2、3、5、8、13、21、34、…。這組數字的前兩項都是1,從第三項開始,每個數字都是前兩個數字的和。輸出這個數列第n項的值。

輸入乙個正整數n

輸出斐波那契數列第n項的值

樣例輸入

6樣例輸出

8

#include

using

namespace std;

intmain()

cout << c;

}return0;

}

總結:數列的變化規律是:通過前兩項的和相加,從而得到第三項的值。

因此,每次迴圈需要儲存三個變數:第乙個數,第二個數,以及輸出數本身。

運用迭代的思想,將原本的第二個數,賦值為新的迴圈中的第乙個數(a=b);而輸出數本身,則賦值為新的迴圈中的第二個數(b=c);

母牛的故事(斐波那契變形)

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n 0這種數列問題從頭開始分析 年數 1 2 3 4 5 6 7 牛數 1 2 3 4 6 9 13 注意...

母牛的故事 遞推(斐波那契數列邊式)

母牛的故事 時間限制 1000 ms 記憶體限制 32768 kb 長度限制 100 kb 判斷程式 standard 來自 小小 題目描述 有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入描述 輸入資料由多個...

遞迴與斐波那契數列

迭代實現 def fab n a1 1 a2 1 a3 1if n 1 print 輸入有誤 return 1 while n 2 0 a3 a1 a2 a1 a2 a2 a3 a 1return a3 result fab 20 if result 1 print 總共有 d對小兔子誕生 resu...