剑指offer——变态跳台阶
来源:互联网 发布:linux view 最后一页 编辑:程序博客网 时间:2024/05/21 17:24
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
现在青蛙的能力升级了,不仅能一次跳1级,还能一次跳n级,这是了不起的进步(说笑的)。不管如何,我们仍然使用数学归纳法进行分析:
当n=1时,跳法只有1种,用f(1)=f(1-1)=1表示,下同;
当n=2时,可以一次跳1级,跳两次,也可以一次两2级,跳法有2种,f(2) = f(2-1) + f(2-2);//f(2-1)表示在有2级台阶的时候,第一次跳1级的跳法,其他类似
当n=3时,可以一次跳1级,跳3次,可以一次跳2级,下一次再跳1级,当然也可以一次跳3级,跳1次,所以跳法是f(3)=f(3-1)+f(3-2)+f(3-3)
……
当n=k的时候,f(k)=f(k-1)+f(k-2)+f(k-3)+…..+f(k-(k-1))+f(k-k)=f(0)+f(1)+f(2)+……+f(k-1),而f(k-1)=f((k-1)-1)+f((k-1)-2)+……+f((k-1)-(k-2))+f((k-1)-(k-1))=f(0)+f(1)+f(2)+……+f(k-2),
所以f(k)=2*f(k-1)。
代码实现:
public int JumpFloorII(int target) { if(target <= 0) return -1; if(target == 1) return 1; return 2 * JumpFloorII(target - 1); }
1 0
- 《剑指offer》——变态跳台阶
- 剑指offer——变态跳台阶
- 剑指offer——变态跳台阶
- 剑指offer——变态跳台阶
- 剑指offer—变态跳台阶
- 《剑指offer》—9、变态跳台阶
- 剑指offer(9)—变态跳台阶
- 剑指offer — 变态跳台阶
- 剑指offer(C++)——变态跳台阶
- 剑指offer(java代码)——变态跳台阶
- 剑指Offer——(9)变态跳台阶
- 剑指offer——9.变态跳台阶
- 算法系列——变态跳台阶(剑指offer)
- 【剑指offer】变态跳台阶
- 【剑指offer】变态跳台阶
- 剑指offer :变态跳台阶
- 剑指Offer-变态跳台阶
- 《剑指offer》变态跳台阶
- 190. Reverse Bits
- Python基础算法/剑指offer
- Linux 文件权限管理 之 特殊权限
- 缓存相关
- 我要做的事
- 剑指offer——变态跳台阶
- Linux 系统命令权限管理 之 sudo
- 2.linux用户管理1
- 树结构练习——排序二叉树的中序遍历
- py-faster-rcnn_caffemodel对人脸进行标注
- 华为OJ 初级:输入n个整数,输出其中最小的k个
- 图灵机器人的引入
- iOS文件断点下载
- java 常用关键词详细解析,让你入门java