题解 | #斐波那契数列#

包含min函数的栈

http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

  • 这道题是非常简单的动态规划题,我记得我大一刚入学,学校教的就是这个,现在也算是回顾一下吧。
  • 将一个问题划分为若干个子问题,比如f(5)=f(4)+f(3)=(f(3)+f(2))+(f(2)+f(1))=3f(2)+2f(1)
  • 从上面,可以观察到f(4)=f(3)+f(2),f(3)=f(2)+f(1),由此可以采用递归的方式,将每个大问题最终 分解为是f(1)还是f(2)的问题上,以此解决问题。
  • 如果还不明白,你可以试着画一张树状图,可能更好理解
  • 当输入数字或者数字为1或2时,函数返回值为1
  • 当大于2时,直接返回f(n-1)+f(n-2)
class Solution {
public:
    int Fibonacci(int n) {
        if(n==1||n==2)return 1;
        else if(n>2)return Fibonacci(n-1)+Fibonacci(n-2);
        return 0;
    }
};
全部评论

相关推荐

鲸鸿:实习协议不用管签多久,要走的时候提前三天说就可以了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务