剑指offer例题——跳台阶、变态跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:
n<=0时,有0种跳法
n=1时,只有一种跳法
n=2时,有两种跳法
已知当n>2时,当最后一次跳1级台阶,则之前有f(n-1)种跳法,当最后一次跳2级台阶时,之前有f(n-2)种跳法,即f(n)=f(n-1)+f(n-2);
故此处采用递归的方法
递归(英语:recursion)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。
public class Solution {
public int JumpFloor(int target) {
if (target <= 0)
return 0;
if (target == 1)
return 1;
if (target == 2)
return 2;
return JumpFloor(target-1)+JumpFloor(target-2);
}
}
上述代码中,若去掉if语句的括号,则会产生缺失的错误
./Solution.java:3: error: '(' expected
if target == 0
^
./Solution.java:3: error: ')' expected
if target == 0
^
2 errors
待加入变态跳台阶,今天累了~
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
已知当青蛙第一次跳一级台阶,则之后有f(n-1)种跳法;
第一次跳两级台阶,则之后有f(n-2)种跳法;
第一次跳三级台阶,则之后有f(n-3)种跳法……第一次跳n级台阶,则有f(n-n)种跳法,故f(n)=f(n-1)+f(n-2)+……+f(n-n),
同理f(n-1)=f(n-2)+……+f(n-n)。将上述两式相减,则f(n)-f(n-1)=f(n-1),即f(n)=2*f(n-1);
故上述编程为:
public class Solution {
public int JumpFloorII(int target) {
if (target<=0)
return 0;
if (target==1)
return 1;
return 2*JumpFloorII(target-1);
}
}
完美,最后结果为
运行时间:12ms;占用内存:9028k。
总结:递归是个好东西!
剑指offer例题——跳台阶、变态跳台阶的更多相关文章
- 剑指Offer - 九度1389 - 变态跳台阶
剑指Offer - 九度1389 - 变态跳台阶2013-11-24 04:20 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳 ...
- 剑指offer(9)变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目分析 根据上一个题目可以知道,青蛙只跳1或2可以得出是一个斐波那契问题,即 ...
- 【剑指Offer】9、变态跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路: 当只有一级台阶时,f(1)=1:当有两级台阶时, ...
- 剑指offer【10】- 变态跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 关于本题,前提是n个台阶会有一次n阶的跳法.分析如下: f(1) = 1 f(2) ...
- 【剑指offer】9:变态跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路: 先考虑最简单情况就是只有一级台阶,仅有一种跳法.两级台阶,有两种 ...
- 剑指offer 8.递归和循环 跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题思路一: a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是 ...
- 剑指offer例题分享--6
前言:继续整理例题,快速做完这部分,然后继续用C++去刷数据结构和算法的题. 面试题28: 代码如下: #include<iostream> #include<stdio.h> ...
- 剑指offer 例题
题目: 实现一个排序算法,排序对象是本公司员工的年龄.要求时间复杂度O(n),空间复杂度不能超过O(n). #include<iostream> using namespace std; ...
- 剑指offer例题分享--8
前言:继续分享,加油! 面试题44: 代码如下: #include<iostream> #include<stdlib.h> using namespace std; int ...
随机推荐
- java.util.base64报错解决
java.util.Base64 这个类,它是在 JDK 1.8 的时候加入的,之前版本的标准库没有这个类. eclipse更换jdk1.8就可以了了.
- [UE4]Format Text
蓝图会自动把字符串中的占位换成参数输入. 字符串不会自动转换,需要手动转换
- IIS 反向代理设置
http://blog.csdn.net/yuanguozhengjust/article/details/23576033
- linux下的环境变量配置
方法一: 方法二:
- elasticsearch 外网访问9200端口访问
可以访问127.0.0.1:9200,但不能访问 公网IP:9200 后面ip就是127.0.0.1的局域网ip,如何解决? 修改配置文件 config/elasticsearch.yml netwo ...
- JPA查询
Pojo: UserDetails EntityManager: entityManager 1. Ceate Criteria CriteriaBuilder builder = entityMan ...
- mysql短日期 长时间转换为短日期
fabutime 2018-09-26 15:27:03 date_format( fabutime,\'%Y-%m-%d\') as fabutime fabutime 2018-09-2 ...
- .net百度编辑器的使用
1.前端引用 <%@ Page ValidateRequest="false" Language="C#" AutoEventWireup="t ...
- 快速部署MySQL数据库
一.下载对应的软件版本 下载地址:http://mirrors.sohu.com/mysql/MySQL-5.6/ [root@localhost ~]# wget -q http://mirrors ...
- QQ聊天字体选择
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...