剑指:斐波纳契数列动态规划求解
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 ; }
相关文章推荐
- 用动态规划求解0-1背包问题
- Floyd算法:用动态规划求解多源(全源)最短路径
- 动态规划求解01背包问题初探(C版)
- 什么是动态规划?动态规划典型例题求解+代码
- LeetCode.3 Longest Substring Without Repeating Characters(动态规划求解,***经典必备题***)
- 01背包问题,动态规划求解
- 动态规划求解连续子数组最大和问题(应该是新的描述方法?)
- 动态规划求解阶乘问题
- 算法导论第16章 贪心算法-0-1背包问题—动态规划求解
- 动态规划求解最长公共子序列
- 0-1背包问题及其动态规划求解之二——王晓东的书本解法
- 用动态规划求解调度问题
- 用动态规划的方法求解两个字符串的最长公共子串
- 动态规划--C#求解01背包
- 动态规划求解0/1背包问题
- 强化学习(三):动态规划求解MDP(Planning by Dynamic Programming)
- 动态规划,求解金矿
- 使用动态规划求解旅行商问题
- 动态规划 数塔问题求解 C++实现
- 动态规划求解最长公共子序列