2020年1月8日 星期三

費式數列

題目:
費式數列的定義:
F(0)=0
F(1)=1
F(n)=F(n-1)+F(n-2)
由定義我們可以得知以下的數列:
0,1,1,2,3,5,8,13,21,34,55,89,144,......

給一個整數N,請輸出第N個費波納西數。

輸入:
輸入包含一個整數N。

輸出:
如果N>=0,輸出第N個費波納西數。
如果N<0,輸出錯誤訊息"invalid input."

範例輸出:




程式碼:
#include<stdio.h>

int main()
{
 int n;
 long long int ans[100] = {0};
 printf("enter number: ");
 scanf_s("%d", &n);
 if (n < 0)
  printf("invalid input");
 else
 {
  if (n == 1)
   printf("%dst ", n);
  else if (n == 2)
   printf("%dnd ", n);
  else if (n == 3)
   printf("%drd ", n);
  else
   printf("%dth", n);
  printf("fibonacci number is: ");
  for (int i = 0; i <= n; i++)
  {
   if (i <= 1)
    ans[i] = i;
   else
    ans[i] = ans[i - 1] + ans[i - 2];

  }
  printf("%lld", ans[n]);
 }
}

筆記:
因為輸出結果可能會很大,所以要用long long int 來儲存。
費式數列的值可以參考這篇

另外,這題是在電腦上demo,所以可以直接加起來,不用考慮效率問題。

沒有留言:

張貼留言