爬楼梯问题

       最近看到很有意思的一道题目,问的是☞有一座高度10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。例如,每次走1级台阶,一共走10步,这是其中一种走法;或者每次垮两级台阶,一共走5步;and so on.问一共有多少种走法。

      当楼梯级数很小时,凭借我们大脑弱小的计算能力,可以很快的得出答案。例如台阶数为1时,当然只有一种方法;台阶数为二时,有两种方法(11或2);台阶数为三时,有三种方法(111,12,21)。再随着台阶数的增长,我们会惊奇的发现☞天呐!我的脑子越来越不够用了?!

       这时就需要我们借助人类的好朋友好伙伴~~>计算机,帮我们解答。但问题来了,我们该怎么告诉它我们的需求呢?相信很多小伙伴一定想说,"反正电脑算的快,我们利用排列组合的思想,告诉它用多层嵌套循环遍历出所有可能!"Bingo,这样是可行的!!!但是请不要虐待电脑,因为它们是我们的好朋友好伙伴!!

        今天小编就要和大家balabala怎么样利用函数重入(递归)来化腐朽为神奇!

       小编有一个习惯,就是看一本书的时候如果发现从前往后不爽的时候,会换个姿势从后往前!这样换个姿势再来一遍,会发现不一样的风景!!!就拿这个问题来说,如果台阶有20级,如果从前往后干,你慢慢从垮一级或两级,再垮一级或两级直至跨到20级,相信你可怜的脑子是算不过来的。但假如我们设想现在到了最后一步(到了第18级台阶,再跨2级到就到第20级台阶了;或到了19级再跨1级到20级),那么,到达20级台阶的方法数Mehod(20)是不是就等于Method(19)+Method(18)?好,如果答案是肯定的,那么我们可不可以归纳出Method(N)=Method(N-1)+Method(N-2)这就是我们得出的状态转移关系!

        如果要想这个递归结束,我们还需要一个状态结束条件(边界条件)。这个简单☞Method(1)=1;Method(2)=2

    万事具备,只欠东风!东风就是用编程语言告诉计算机,它该怎么做。请看小编用C语言怎么和它说的

codes of steps

注:更多有趣问题,请关注leon_Geo
more funning questions,please locate "leon_Geo"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 正如前文所说,我们把爬上N个台阶共有有多少种方法这一问题通过递归的方法得以了解决,但问题虽然解决了可我们想过...
    Leon_Geo阅读 2,394评论 0 1
  • 问题来源 可爱的小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶,有的时候一次爬三个台阶。如果...
    yigoh阅读 9,315评论 3 5
  • 接触DP最早的应该就是这道题了吧,翻了翻leetcode submission发现最早的是在一年前... 而且是最...
    石榴蒂凡尼_21e4阅读 7,514评论 0 0
  • 清早的雾气还未散,在路上的人踏着古旧的青石板,发梢都被雾气沾湿,衣服一摸也都是潮的,城东那家茶馆却早早开了门,咿咿...
    白灿阅读 3,715评论 0 0
  • 才知道读者里有不少考研人。 今晚是考前最后一晚,有些话想对你们说: 如果你紧张的睡不着觉,没关系, 自信的醒着, ...
    像玉的石头阅读 3,860评论 0 0

友情链接更多精彩内容