您的位置:首页 > 其它

剑指:斐波纳契数列动态规划求解

2017-02-19 20:49 141 查看


题目描述

在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*),现在要求输入一个整数n,请你输出斐波那契数列的第n项。

n<=39

思路1:迭代法

int Fibonacci(int n)
{
if(n==0) return 0;
if(n==1) return 1;
int a=0,b=1;
for(int i=1;i<n;i++)
{
b=a+b;
a=b-a;
}
return b;
}


思路2: 自顶向下动态规划,减少重复计算

int f[40];
int Fibonacci(int n)
{
if(n==0) return 0;
if(n==1) return 1;
if(f
!=0) return f
;
int t=Fibonacci(n-1)+Fibonacci(n-2);
f
=t;
return t;
}


思路3:自底向上动态规划

int f[40];
int Fibonacci(int n)
{
f[0]=0;
f[1]=1;
if(n==0) return 0;
if(n==1) return 1;
for(int i=2;i<=n;i++)
{
f[i]=f[i-1]+f[i-2];
}
return f
;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息