一列數字的規則如下;1,1,2,3,5,8,13,21,34........ 求第30位數字是多少,用遞規和非遞迴兩種方法演算法實現
斐波納契數列(Fibonacci Sequence),又稱黃金分割數列。在數學上,斐波納契數列以如下被以遞迴的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,現在我從演算法的角度,利用遞迴和非遞迴兩種方式來進行實現:
一:遞迴
這個數列是用遞迴來實現的經典例子。
private static long Fibonacci(int n)
{
long result = 1;//當n<=2時都返回1
if(n>2) //當n>2時,進行遞迴計算
{
result= Fibonacci(n-1)+Fibonacci(n-2);
}
return result;
}
二:非遞迴演算法,這個演算法主要是利用迴圈來進行計算:
private static long Fibonacci(int n)
{
long result = 1; //當n<=2時都返回1
if (n > 2) //當n>2時,利用迴圈計算
{
long first = 1;
long second = 1;
int i = 0;
n = n - 2; //每次當然要減少兩次迴圈
while (i < n)
{
first = second;
second = result;
result = first + second;
i++;
}
}
return result;
}
轉自:http://www.cnblogs.com/shaosks/archive/2011/09/29/2195109.html