Fibonacci數列以及藍橋杯Fibonacci數列%10007
阿新 • • 發佈:2019-01-29
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞迴的方法定義:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)。
解法1:(尾遞迴)
解法二:#include<stdio.h> int fib(int n); int main() { int n; scanf("%d",&n); printf("%d\n",fib(n)); return 0; } int fib(int n) { if(n<=2) return 1; else return fib(n-2)+fib(n-1); }
#include<stdio.h>
int main()
{
int n;
int f0=1,f1=1,currentNumber=0;
scanf("%d",&n);
if(n<=2)
currentNumber = 1;
else
{
for(int i=2;i<n;i++)
{
currentNumber = f0+f1;
f0=f1;
f1=currentNumber;
}
}
printf("%d\n",currentNumber);
return 0;
}
藍橋杯入門題目:
問題描述
給定一個長度為n的數列,將這個數列按從小到大的順序排列。1<=n<=200
第一行為一個整數n。
第二行包含n個整數,為待排序的數,每個整數的絕對值小於10000。
輸出一行,按從小到大的順序輸出排序後的數列。
樣例輸入 58 3 6 4 9 樣例輸出 3 4 6 8 9 我給出的參考程式碼:
#include<stdio.h> int main() { int n; int f0=1,f1=1,currentNumber=0; scanf("%d",&n); if(n<=2) currentNumber = 1; else { for(int i=2;i<n;i++) { currentNumber = (f0+f1)%10007; f0=f1; f1=currentNumber; } } printf("%d\n",currentNumber); return 0; }
思想:只要求得出餘數,分佈求餘。