《剑指offer》刷题笔记(递归和循环):变态跳台阶
来源:互联网 发布:ios mvvm的数据绑定 编辑:程序博客网 时间:2024/05/22 04:51
《剑指offer》刷题笔记(递归和循环):变态跳台阶
- 转载请注明作者和出处:http://blog.csdn.net/u011475210
- 代码地址:https://github.com/WordZzzz/Note/tree/master/AtOffer
- 刷题平台:https://www.nowcoder.com/
- 题 库:剑指offer
- 编 者:WordZzzz
- 剑指offer刷题笔记递归和循环变态跳台阶
- 题目描述
- 解题思路
- C版代码实现
- 递归
- 循环
- 移位
- Python 代码实现
- 递归
- 循环
- 移位
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路:
因为n级台阶,第一步有n种跳法:跳1级、跳2级、到跳n级
跳1级,剩下n-1级,则剩下跳法是f(n-1)
跳2级,剩下n-2级,则剩下跳法是f(n-2)
所以f(n)=f(n-1)+f(n-2)+…+f(1)
因为f(n-1)=f(n-2)+f(n-3)+…+f(1)
所以f(n)=2*f(n-1)
实现f(n)=2*f(n-1)的方法有很多种,递归、循环都可以。
C++版代码实现:
递归:
class Solution {public: int jumpFloorII(int number) { if(number <= 0){ return -1; }else if(number == 1){ return 1; }else{ return 2 * jumpFloorII(number -1); } }};
循环:
class Solution {public: int jumpFloorII(int number) { if(number == 0) return number; int total=1; for(int i=1; i<number; i++) total *= 2; return total; }};
移位:
class Solution {public: int jumpFloorII(int number) { return 1<<--number; }};
Python 代码实现:
递归:
# -*- coding:utf-8 -*-class Solution: def jumpFloorII(self, number): # write code here if number <= -1: return -1 elif number == 1: return 1 else: return 2*self.jumpFloorII(number-1)
循环:
# -*- coding:utf-8 -*-class Solution: def jumpFloorII(self, number): # write code here if number == 0: return number total = 1 for i in range(number-1): total *= 2 return total
移位:
# -*- coding:utf-8 -*-class Solution: def jumpFloorII(self, number): # write code here return 1<<(number-1);
系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~
完的汪(∪。∪)。。。zzz
阅读全文
0 0
- 《剑指offer》刷题笔记(递归和循环):变态跳台阶
- 剑指offer:(9)递归和循环:变态跳台阶
- 《剑指offer》刷题笔记(递归和循环):跳台阶
- 剑指offer: 变态跳台阶(循环与递归)
- 剑指offer--变态跳台阶(巧用递归)
- 剑指offer 9题 【递归和循环】 跳台阶
- 剑指offer:跳台阶(循环和递归)
- 变态跳台阶(递归 循环)
- 【练习笔记】剑指offer-变态跳台阶
- 变态跳台阶(剑指Offer)
- 剑指offer(九)变态跳台阶
- 剑指offer--(9) 变态跳台阶
- 《剑指Offer》递归和循环——跳台阶
- 剑指Offer:变态跳台阶(一刷)
- 剑指offer第九题(变态跳台阶)
- 变态跳台阶(剑指Offer 第 9 题)
- 【剑指offer】变态跳台阶
- 【剑指offer】变态跳台阶
- Python内置模块
- 指定分区表分区进行查询
- 【剑指offer】二进制中1的个数
- RSA加解密过程
- Cortex-M3的特权级别
- 《剑指offer》刷题笔记(递归和循环):变态跳台阶
- think in java 第十五章 泛型 总结随笔
- SpringMVC的各种参数绑定方式
- 关于微信小程序wx.switchTab的问题
- 楚楚街2016招聘笔试(航线)
- Redis缓存(RedisTemplate)
- PhpStorm中如何配置SVN,详细操作方法
- 二分查找法 -- java
- SQL中重复数据的查询与删除---小白收藏篇