算法疑难(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>
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2024-10-30:27岁,宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672