70. Climbing Stairs

来源:互联网 发布:么么哒 网络词汇 编辑:程序博客网 时间:2024/05/29 14:09

70. Climbing Stairs
这个问题抽象出来就是求解费波拉契数列。而求解费波拉契数列一般两种方法,一种就是基于循环的,一种是基于递归的。虽然这题用递归解比较简单直观,但是当n较大的时候,程序效率非常低,结果甚至报错;所以从效率上考虑,一般建议使用循环。

基于循环:

class Solution {public:    int climbStairs(int n) {       int result[2]={1,1};       if(n<2)            return result[n];        long long f1=1;        long long f2=1;        long long f=0;        for(int i=2;i<=n;i++)        {            f=f1+f2;            f1=f2;            f2=f;        }        return f;    }};

基于递归

class Solution {public:    int climbStairs(int n) {       int result[2]={1,1};       if(n<2)            return result[n];        return climbStairs(n-1)+climbStairs(n-2);    }};
0 0
原创粉丝点击