LeetCode70 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?这里写代码片

class Solution {
public:
    int climbStairs(int n) {
        // int re = 0;
        // if(n == 0 || n == 1){
        //     return 1;
        // }else{
        //     re = climbStairs(n-1)+climbStairs(n-2);
        // }
        // return re;

//非递归版本

        int a = 1, b = 1, re = 0;
        if(n == 1 || n ==0){
            return 1;
        }
        while(--n > 0){
            re = a+b;
            b = a;
            a = re ;        
        }
        return re;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_40906550/article/details/82433118