題目 1004 遞迴 母牛的故事 簡單遞迴演算法

2021-10-19 14:13:54 字數 1391 閱讀 1950

題目 1004: [遞迴]母牛的故事

時間限制: 1sec 記憶體限制: 128mb 提交: 61799 解決: 19025

題目描述

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

輸入輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n(0輸出

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

每個輸出佔一行。

樣例輸入24

50樣例輸出24

6

//自己寫的判斷輸入為0退出那裡寫的很笨拙下面附上一位大佬寫的解析和演算法

#include

intcount

(int n)

if(n>=4)

}int

main()

else

}return0;

}

解題思路:

審清題幹,養成習慣。

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。是不是有點似曾相識?沒錯,這道題和斐波那契數列很相似,只不過遞增的規律稍微變了一些。

乙個輸入,乙個輸出,多組測試用例,輸入0結束,這是首先要明確的,所以要用到迴圈,並且輸入0時結束迴圈。

我們先來分析一下這道題的規律吧。

這裡簡單地列乙個**:

年份 1 2 3 4 5 6 7 8 9

母牛數量 1 2 3 4 6 9 13 19 28

有沒有看出一些端倪?沒錯,fn=fn-1+fn-3(n>3)。記不記得斐波那契數列的公式?fn=fn-1+fn-2(n>2)。說到這裡,想必大家都會做了吧?

注意,這裡題目明確要用遞迴的方法,所以大家盡量還是用遞迴來做,雖說用陣列的方法也能提交。。。

既然是遞迴,那就離不開三點:找重複、找變化、找邊界。

(1)找重複:就是遞迴時重複操作的部分,詳見上面的公式;

(2)找變化:就是遞迴時引數的變化,上面的公式一起囊括了;

(3)找邊界:就是遞迴脫出的條件,這裡很明顯是n<=3,因為此時上面的公式不適用了。

寫成分段函式的形式就是:

n			   ,n<=3	

f(n)=

f(n-1)+f(n-3) ,n>3

注意事項:

(1)注意測試用例是多組,要想辦法迴圈輸入並輸出;

(2)注意程式執行結束的條件是輸入0時結束;

(3)注意遞迴方法的脫出條件是n<=3;

參考**:

# include

intfun(

int n)

intmain()

如有裨益,吾之幸也。祝大家程式設計進步。

題目 1004 遞迴 母牛的故事

題目 1004 遞迴 母牛的故事 時間限制 1sec 記憶體限制 128mb 提交 57063 解決 17498 題目描述 有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入輸入資料由多個測試例項組成,每個測試例...

題目 1004 遞迴 母牛的故事

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n 0輸出 對於每個測試例項,輸出在第n年的時候母牛的數量。每個輸出佔一行。樣例輸入 245 0樣例輸...

45 題目 1004 遞迴 母牛的故事

時間限制 1sec 記憶體限制 128mb 提交 50680 解決 15534 題目描述 有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?輸入 輸入資料由多個測試例項組成,每個測試例項佔一行,包括乙個整數n 0輸出...