美文网首页
JS实现跳台阶拓展问题

JS实现跳台阶拓展问题

作者: kugua666 | 来源:发表于2020-09-14 00:03 被阅读0次

扩展一:一只青蛙一次可以跳上1级台阶,也可以跳上2级,但是不能连续两次跳两级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

//分析:递归可以理解为下台阶
function climb(n, state){
   if(n === 0) {// 没有台阶下时,返回值为0,表示0种下台阶的方式
       return 0
   }
   if(n === 1){//递归出口,下一个台阶,返回值为0,表示1种下台阶的方式
       return 1
   }
   if(n === 2){//递归出口,下两个台阶,得分之前的状态,返回下台阶的方式
       if(state === 2){//状态为2,表示之前下过两次台阶,现在下台阶只有一种方式
           return 1
       }
       if(state === 1){//状态为1,表示之前下过一次台阶,现在下台阶有两种方式
           return 2
       }
   }
   if( n > 2){
       if(state === 0){//起始状态,下一个台阶就将状态设置为1,下两个台阶就将状态设置为2,
           return climb(n-1, 1) + climb(n-2, 2)
       }
       if(state === 1){//状态为1,也就是之前下了一个台阶,现在可以下一个台阶或者两个台阶
           return climb(n-1, 1) + climb(n-2, 2)
       }
       if(state === 2){//状态为2,也就是之前下了两个台阶,现在只能下一个台阶
           return climb(n-1, 2)
       }
   }
}
console.log(climb(7, 0))

扩展二:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

//易知 f(n)=f(n-1)+f(n-2)+……f(1)
//f(n-1)=f(n-2)+……f(1)
//两式相减得f(n)=2f(n-1)
function jumpFloorII(number)
{
    // write code here
    if(number === 1) return 1
    return 2*jumpFloorII(number-1)
}

相关文章

  • JS实现跳台阶拓展问题

    扩展一:一只青蛙一次可以跳上1级台阶,也可以跳上2级,但是不能连续两次跳两级。求该青蛙跳上一个n级的台阶总共有多少...

  • 台阶走法问题js实现

    台阶走法问题

  • 动态规划

    青蛙跳台阶问题 问题:一个青蛙,一次只能跳一级台阶,或者跳两级台阶,这个青蛙跳 n 级台阶有多少种跳法? 如果这只...

  • 跳台阶

    问题描述:?一次可以跳1级台阶,也可以跳2级台阶,问?跳上n级台阶有多少种跳法。 寻找递推关系:1.如果第一次跳1...

  • 算法---青蛙跳台阶问题

    一只青蛙可以一次跳一级台阶,也可以一次跳两级台阶,如果青蛙要跳上n级台阶,共有多少钟跳法? 问题分析 当青蛙即将跳...

  • 青蛙跳台阶问题

    青蛙跳台阶One 问题描述 一只青蛙一次可以跳1级台阶,也可以跳2级台阶。求该青蛙跳上一个级的台阶总共有多少种跳法...

  • 跳台阶问题

    跳台阶问题 题目描述: 一个台阶总共有 n 级,如果一次可以跳 1 级,也可以跳 2 级。求总共有多少种跳法,并分...

  • 青蛙跳台阶--python

    一只青蛙可以一次跳 1 级台阶或者一次跳 2 级台阶,例如:跳上第 1 级台阶只有一种跳法:直接跳 1 级即可。跳...

  • JSX JSX是javascript语法的拓展,其特点有点想模板语言,却在javascript内部实现。 1.JS...

  • 青蛙跳台阶问题

    题目:一只青蛙要跳上n层高的台阶,一次能跳一级,也可以跳两级,有多少种跳上这个n层高台阶的方法? 问题分析由于只能...

网友评论

      本文标题:JS实现跳台阶拓展问题

      本文链接:https://www.haomeiwen.com/subject/kmzoektx.html