2021.09.27 - 088.爬楼梯

1. 题目

在这里插入图片描述

2. 思路

(1) 递归(超时)

  • 最基本的斐波那契数列问题,但是递归会重复计算前面的数。

(2) 递推

  • 根据递推公式f(n)=f(n-1)+f(n-2)直接向后递推。

3. 代码

public class Test {
    
    
    public static void main(String[] args) {
    
    
        Solution1 solution = new Solution1();
        System.out.println(solution.climbStairs(8));
    }
}

class Solution {
    
    
    public int climbStairs(int n) {
    
    
        if (n == 1) {
    
    
            return 1;
        }
        if (n == 2) {
    
    
            return 2;
        }
        return climbStairs(n - 1) + climbStairs(n - 2);
    }
}

class Solution1 {
    
    
    public int climbStairs(int n) {
    
    
        if (n == 1) {
    
    
            return 1;
        }
        if (n == 2) {
    
    
            return 2;
        }
        int pre1 = 1;
        int pre2 = 2;
        int res = 0;
        while (n > 2) {
    
    
            res = pre1 + pre2;
            pre1 = pre2;
            pre2 = res;
            n--;
        }
        return res;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44021223/article/details/120502643
今日推荐