斐波那契的定义如下:
f(n)= 0 n=0
1 n=1
f(n-1)+f(n-2) n>1
解法1:循环
long long fun(unsigned n)
{
int ar[2]={1,1};
if(n<2)
return ar[n];
long long first=1;
long long second=1;
long long fib=0;
for(int i=2;i<=n;++i)
{
fib=first+second;
first=second;
second=fib;
}
return fib;
}
解法2:递归
long long fun(unsigned n)
{
if(n==0 || n==1)
return n;
else
return fun(n-1)+fun(n-2);
}
消除递归的重复性计算:
解法3:
int nfac(int a,int b,int n)
{
if(n<=2) return a;
else return nf