[剑指offer] 跳台阶

简介: 本文首发于我的个人博客:尾尾部落题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

本文首发于我的个人博客:尾尾部落

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

解题思路

按照题意,
1 级 ---- 1 种
2 级 ---- 2 种
3 级 ---- 3 种
4 级 ---- 5 种
5 级 ---- 8 种
我们可以得到一种规律,如果要跳 6 级,可以从 5 级跳一步到 6 级,5 级的方案中有多少种就有多少种跳法跳到 6 级;还可以从 4 级跳两步到 6 级,同理,4 级的方案有多少种就有多少种方法从 4 级跳到 6 级,所以可以得到公式f(n) = f(n-1) + f(n-2),再结合 1 级和 2 级的情况,可以得以如下的规律:
f(n) = 1, (n=1)
f(n) = 2, (n=2)
f(n) = f(n-1)+f(n-2) ,(n>2,n为整数)
这就是斐波那契数列的变形,因此可以用递归来实现。

参考代码

public class Solution {
    public int JumpFloor(int target) {
        if(target<=0)
            return 0;
        else if(target == 1|| target == 2)
            return target;
        else
            return JumpFloor(target-1)+JumpFloor(target-2);
    }
}
目录
相关文章
【剑指offer】-跳台阶-08/67
【剑指offer】-跳台阶-08/67
|
机器学习/深度学习 C++
剑指offer 66. 左旋转字符串
剑指offer 66. 左旋转字符串
77 0
|
Java Python
左旋转字符串(剑指offer 58-II)
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
|
算法 Java
左旋转字符串 (剑指Offer58-II)
左旋转字符串 (剑指Offer58-II)
108 0
青蛙跳台阶
青蛙跳台阶
77 0
31.跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
81 0
AcWing 821. 跳台阶
AcWing 821. 跳台阶
65 0
AcWing 821. 跳台阶
|
算法 前端开发 程序员
「LeetCode」剑指Offer-10-II 青蛙跳台阶问题⚡️
「LeetCode」剑指Offer-10-II 青蛙跳台阶问题⚡️
142 0
「LeetCode」剑指Offer-10-II 青蛙跳台阶问题⚡️
|
算法 前端开发 程序员
「LeetCode」剑指Offer-58-II左旋转字符串⚡️
「LeetCode」剑指Offer-58-II左旋转字符串⚡️
157 0
「LeetCode」剑指Offer-58-II左旋转字符串⚡️
|
机器学习/深度学习
剑指offer之青蛙跳台阶问题
剑指offer之青蛙跳台阶问题
107 0