算法疑难(js实现)---5、变态跳台阶

算法疑难(js实现)---5、变态跳台阶

一、总结

一句话总结:

变态跳台阶的递推表达式咋一眼看不是很好写出,我们可以多枚举几个例子,通过例子找规律,从而总结出f(n)
let cache=[,1,2];
function jumpFloor(n) {
    if(cache[n]!==undefined) return cache[n];
    //计算f(n)并返回
    cache[n]=1;
    for (let i=n-1;i>=1;i--){
        cache[n]+=jumpFloor(i);
    }
    return cache[n];
}

1、找递推表达式常见的两种方式?

1、直接找出f(n)(f(n)的关系非常明显的情况下)
2、多枚举几个例子,通过例子找规律,从而总结出f(n)

二、变态跳台阶

博客对应课程的视频位置:5、变态跳台阶
https://www.fanrenyi.com/video/20/241

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>变态跳台阶</title>
 6 </head>
 7 <body>
 8 <!--
 9 需求:
10 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。
11 求该青蛙跳上一个n级的台阶总共有多少种跳法。
12 
13 f(n)来表示青蛙跳上一个n级的台阶跳法种数
14 
15 f(n)
16 
17 多枚举几个例子,找规律,
18 f(1)=1
19 f(2)=2
20 f(3)=f(2)+f(1)+1
21 f(4)=f(3)+f(2)+f(1)+1
22 f(5)=f(4)+f(3)+f(2)+f(1)+1
23 ...
24 f(n)=f(n-1)+f(n-2)+...+f(2)+f(1)+1
25 
26 -->
27 <script>
28     let cache=[,1,2];
29     function jumpFloor(n) {
30         if(cache[n]!==undefined) return cache[n];
31         //计算f(n)并返回
32         cache[n]=1;
33         for (let i=n-1;i>=1;i--){
34             cache[n]+=jumpFloor(i);
35         }
36         return cache[n];
37     }
38 
39     console.log(jumpFloor(10));
40     console.log(cache);
41 </script>
42 </body>
43 </html>
原文地址:https://www.cnblogs.com/Renyi-Fan/p/12916331.html