青蛙跳台阶(递归法)

//萌新第一次写博客,语言不太准确,代码可能也比较屎,不喜轻喷~ 

青蛙跳台阶:

        一只青蛙可以一次跳一级或者两级台阶,现给定一个数n,若青蛙初始在第零级台阶,要跳到第n级台阶,求共有几种跳法。

        按照正向思维,我们知道青蛙在第0级时可以跳到第1或2级,在第1级时又可以跳到第2或3级......以此类推,分支越走越多不利于计数统计,且难以控制分支的结束,因此我们暂且放弃正面硬刚,采用反向思维

        由上面的分析发现难以控制分支结束的条件。设青蛙现处于第m级,当m=n时结束分支,又因为青蛙要到第n级必须先到第n-1级或n-2级,要到n-1级要先到n-2级或n-3级......以此类推,每次前推将此问题分成更多更简单的问题,可以使用递归法解决,思路如下:

         欲到第n级,先到n-1级或者n-2级,且在第n-1级时有且只有一种跳法到第n级,在第n-2级时有两种跳法:1.跳一次两级 2.跳两次一级,但是2.时会跳到n-1级产生重复,因此也只有一种跳法.综上,

跳到n级的方法 = 跳到n-1级的方法 + 跳到n-2级的方法  种,

显然当n=1有且只有一种跳法,n=2时有两种跳法,所以我们设置最基本的问题答案为1或2,进行递归操作,代码如下 :

 

你可能感兴趣的:(有意思的小问题,c++,算法,开发语言)