1- 问题描述

  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?


2- 思路分析

  很自然的会想到递归,假设 n 级台阶有 T(n) 种不同走法。最后一步存在两种情况:剩下 1 级台阶,或者,剩下 2 级台阶。

  第一种情形,则前面 n-1 步有 T(n-1)种走法;

  第二种情形,则前面 n-2 步有 T(n-2)种走法。

  故有:T(n) = T(n-1) + T(n-2),其中 T(1) = 1, T(2) = 2。正好是 Fibonacci 数列!

  递归算法能缩短程序代码、提高编程效率,但是它也有致命的弱点:如果递归调用地层次过多甚至无休止的进行递归调用,将耗尽系统资源(栈满),出现“堆栈溢出错误”。所幸的是,一般可以用递归解决的问题也可以用循环解决!


3- Python实现

 1 # -*- coding: utf-8 -*-
 2 # Climbing Stairs
 3 # 递归实现
 4
 5 def climbStairs(n):
 6     if not n: return 0
 7     solv = []
 8     solv.extend([1, 2])    # T(1), T(2)
 9     if n >= 3:
10         for i in range(2, n):
11             solv.append(solv[i-1] + solv[i-2])
12     return solv[n-1]

 1 # -*- coding: utf-8 -*-
 2 # Climbing Stairs
 3 # 循环实现
 4
 5 def climbStairs(n):
 6     if not n: return 0
 7     if n == 1: return 1
 8     if n == 2: return 2
 9
10     a, b = 1, 2
11     for i in range(2, n):
12         a, b = b, a + b
13     return b

  

转载于:https://www.cnblogs.com/freyr/p/4499847.html

Cllimbing Stairs [LeetCode 70]相关推荐

  1. 【斐波那切数列】LeetCode 70. Climbing Stairs

    LeetCode 70. Climbing Stairs 这是一道利用斐波那切数列求解的题目.求斐波那切数列有比较经典的4种方法 (1)递归法:复杂度太高 (2)迭代法:时间复杂度为O(n)O(n)O ...

  2. [勇者闯LeetCode] 70. Climbing Stairs

    [勇者闯LeetCode] 70. Climbing Stairs Description You are climbing a stair case. It takes n steps to rea ...

  3. LeetCode 70爬楼梯71简化路径72编辑距离(dp)

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...

  4. 动态规划基础——爬楼梯(Leetcode 70)

    题目选自Leetcode 70.爬楼梯 动态规划的基础题,类似斐波那契数列一样的一维dp 状态转移方程为: dp[i] = dp[i-1] + dp[i-2]; 题目描述: 解题代码: int cli ...

  5. Python描述 LeetCode 70. 爬楼梯

    Python描述 LeetCode 70. 爬楼梯   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术博文,主要包括前端开发.pyt ...

  6. [LeetCode]70.Climbing Stairs

    [题目] You are climbing a stair case. It takes n steps to reach to the top. Each time you can either c ...

  7. [leetcode 70]Climbing Stairs

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  8. LeetCode 70. 爬楼梯(Climbing Stairs)

    递归解法(超时): class Solution { public:int climbStairs(int n) {if(n == 1) return 1;if(n == 2) return 2;re ...

  9. LeetCode 70. Climbing Stairs

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

最新文章

  1. 人工神经网络在行人轨迹预测上的应用
  2. 织梦 m list.php tid,在织梦标签dede:list中增加noflag属性的方法支持5.7版本
  3. 执行目标文件引发的问题:syntax error: word unexpected (expe...
  4. Enterprise Architecture 13 将顺序图自动转化为协作图
  5. Linq中的Where与SkipWhile
  6. 【最短路】SDUT3034--炸学校
  7. HDU 4085 Steiner树模板称号
  8. hibernate.cfg.xml的一些事
  9. MOSS中代码运行的权限提升(半摘)
  10. mysql句式增删改,MySQL 增删改语句
  11. GridView 中取值的方法汇总
  12. 内地酒量排行榜山东居首 东北三省无一进前三
  13. 视觉SLAM十四讲 第9讲 后端1 贝叶斯法则 式9.5推导
  14. 机顶盒抓包(无法连接WIFI的设备)
  15. 腾讯、阿里、百度高工都点头称赞的“Redis 实战超全笔记”,不看你就亏大发了
  16. 如何先梳理业务逻辑再写代码
  17. 微软商店、应用、网站无法登录
  18. 【Android】实现九宫格展示图片+视频(仿QQ空间、微信朋友圈)
  19. 职场打拼的15个基本能力
  20. sql如何把一个数据库的表复制到另一个数据库中【转载】

热门文章

  1. vector删除第i个元素_[LeetCode] 215. 数组中的第K个最大元素
  2. 量子计算机多少量子,中国“夺回”量子霸权:世界上最快的量子计算机
  3. springboot 添加拦截器之后中文乱码_springboot中配置了拦截器后,拦截器无效的解决方案之一...
  4. linux配置英文,linux 系统配置命令(国外英文资料).doc
  5. Android图片褪色,Android – 使用Alpha褪色动画闪烁图片
  6. 计算机丢失faultrep.dll,faultrep.dll是什么文件?
  7. 用python写生日祝福的教程_祝豌豆生日快乐 - Python猫的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. html5字体颜色自动转换,【转】js里alert里的字体颜色怎么设置:字体颜色方法;fontcolor(color)...
  9. 对python的认识800字_我对python里True和False的理解
  10. 排序只显示前5_Linux 文件大小统计与排序 du,df 和 sort!