题目:
一、循环
#include<stdio.h>
int Fibonacci(int n)
{
if(n==1)
return 1;
int fn1=0;
int fn2=1;
int fn;
for(int i=2;i<=n;i++)
{
fn=fn1+fn2;
fn1=fn2;
fn2=fn;
}
return fn;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",Fibonacci(n));
}
二、递归
#include<stdio.h>
int Fibonacci(int n)
{
if(n==1||n==2)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",Fibonacci(n));
}
三、带剪枝的递归
#include<stdio.h>
int Fib[41]={0,1,1};
int Fibonacci(int n)
{
if(Fib[n]==0)
Fib[n]=Fibonacci(n-1)+Fibonacci(n-2);
return Fib[n];
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",Fibonacci(n));
}