写一个函数,输入n,求斐波那契(Fibonzcci)数列的第 n项。
1.非递归方法
(1)
long long Fibonacci(unsigned n)
{
int result[2]={0,1};
if(n<2)
return result[n];
long long fibNMinusOne=1;
long long fibNMinusTwo=0;
long long fibN=0;
for(unsigned int i=2;i<=n;++i)
{
fibN=fibNMinusOne+fibNMinusTwo;
fibNMinusTwo=fibNMinusOne;
fibNMinusOne=fibN;
}
return fibN;
}
(2)
long long Fib(long long N)
{
long long first = 1;
long long second = 1;
long long ret = 0;
for (int i = 3; i <=N; ++i)
{
ret = first + second;
first = second;
second = ret;
}
return second;
}
(3)
int Fibon(int n)
{
if (n < 0)
{
printf("n is error!\n");
return -1;
}
int n1 = 0;
int n2 = 1;
int n3 = 0;
for (int i = 3;i <= n;++i)
{
n3 = n1+n2;
n1 = n2;
n2 = n3;
}
return n3;
}
2.递归方法
long long Fibonacci(unsigned int n)
{
if(n<=0)
return 0;
if(n==1)
return 1;
return Fibnacci(n-1)+Fibnacci(n-2);
}