1. 程式人生 > >zzuli OJ 1055: 兔子繁殖問題

zzuli OJ 1055: 兔子繁殖問題

題目描述
這是一個有趣的古典數學問題,著名義大利數學家Fibonacci曾提出一個問題:有一對小兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。按此規律,假設沒有兔子死亡,第一個月有一對剛出生的小兔子,問第n個月有多少對兔子?

輸入
輸入月數n(1<=n<=44)。

輸出
輸出第n個月有多少對兔子。

樣例輸入
3
樣例輸出
2
提示
本題是一個經典的遞推入門題目:
用f(n)表示第n個月的兔子數目,則:
f(n) = f(n-1) + 本月新生兔子數
而,本月新生兔子數 = f(n-2) (因為上上個月已存在的每隻兔子,本月都會新生一隻兔子)
所以,f(n) = f(n-1) + f(n-2)
這就是著名的fabinacci數列,後一項等於前兩項的和: 1 1 2 3 5 8…

#include<stdio.h>
 int main()
 {
  int f1=1,f2=1,f3;
  int i,n;
  scanf("%d",&n);
  if (n==1||n==2) printf("1");
  for(i=3;i<=n;i++)
  {
 f3=f1+f2;
  f1=f2;
  f2=f3;
    }
    printf("%d",f3);
    return 0;
 }