1. 程式人生 > >Home11月27日:愚公移山

Home11月27日:愚公移山

Description

這是一題簡單的題目,考的只是你的數學而已。我一直都很好奇愚公一家到底有多少人。好吧,毛學姐說你們會幫我的。假設愚公家族 每個人的一生是這樣度過的:(當他回首往事的時候。。。開個玩笑,請無視) 頭20年用來生長髮育以及挖山,第21年(可以理解為21歲的時候)開始 每年生下一個孩子( 自交,任性, 沒妻子,全生男,且不考慮死亡),當然還要去挖山。我們預設愚公1歲的時候為第一年(第21年愚公生下第一胎),求第N年愚公家族(愚公家族不需要妻子,別考慮太多)有多少人。

Input

有多組測試資料,每組佔一行,包括一個數N(0<N<=60),N為第N年。

Output

對於每組測試,輸出整數M,M為愚公家族的人數。

Sample Input 1

1
21
41

Sample Output 1

1
2
23

C語言思路

  1. 首先可以看出此題是特殊的斐波那契數列,因為要等到愚公20歲之後才會有後代,所以前20年人數都是1。到21年才會有第一個後代,從21到40每年增加一個後代。
  2. 到41年,愚公的第一個後代開始有後代,所以這一年增加2個人。42年第二個後代也開始有後代,所以增加3個人。依次類推,從41年到60年每年增加的人數比上一年多一個。
  3. 之所以20年以後,每年增加的後代會變化,是因為20年前的人都會在今年有後代,所以20年以後的人數即為上一年人數加上20年前的人數。
  4. 定義一個函式f(int x),x為年份,當x<=20時,始終輸出1。
  5. 當x>20時,輸出f(x-1)+f(x-20),再進行遞迴即可。
在這裡插入程式碼片