# You are climbing a stair case. It takes n steps to reach to the top. # Each time you can either climb 1 or 2 steps. In how many distinct # ways can you climb to the top? # Note: Given n will be a positive integer. # 问题:爬楼梯, 有n个台阶, 你可以选择一步走一个台阶或两个台阶, 计算一共可以有多少种爬楼梯的方法 # 是一个递归问题, 假设走n个台阶, 有S(n)中方法 # 假设第一步走1个台阶, 剩下还有n-1个台阶, 即有S(n-1)种走法 # 假设第一步走2个台阶, 剩下还有n-2个台阶, 即有S(n-2)种走法 # 所以n个台阶, 一种有S(n) = S(n-1) + S(n-2)种走法 # 假设n = 3, 有第一步走一个台阶S(3 - 1) --> (1, 1, 1) 或 (1, 2) 第一步走两个台阶S(3 - 2)(2, 1) 共三种走法 class Solution(object): def climbStairs(self, n): a, b = 1, 1 for i in range(n): a, b = b, a + b return a if __name__ == '__main__': n = 4 s = Solution() print(s.climbStairs(n))
Leetcode练习<十六> 爬楼梯与斐波那契数列
最新推荐文章于 2022-11-07 23:12:45 发布