題目 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輸出...