递归之台阶问题

简介: 跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路当n=1时,次数f(n)=1。 当n=2时,次数f(n)=2。(11或2) 当n>2时,当前一步可以跳一级,也可以跳两级,次数f(n)=f(n-1)+f(n-2)。实现代码class Solution {public:

跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解题思路

当n=1时,次数f(n)=1。
当n=2时,次数f(n)=2。(11或2)
当n>2时,当前一步可以跳一级,也可以跳两级,次数f(n)=f(n-1)+f(n-2)。

实现代码

class Solution {
public:
    int jumpFloor(int number) {
        if (number <= 2)
            return number;
        else
            return jumpFloor(number - 1) + jumpFloor(number - 2);
    }
};

变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解题思路

当台阶数为n时,可以分为以下步骤来完成:
设第一次跳的台阶数为s,跳台阶方式数为T,则:
(1)s=1时,T(n) = T(n-1)
(2)s=2时,T(n) = T(n-2)
.
.
.
(n)s=n时,T(n) = T(0) = 1
所以总的跳台阶方式数T可以表示为:
T(n) = T(0) + T(1) + T(2) + … + T(n-1)
由于T(0) = T(1) = 1,所以T(n) = 2^(n-1)

实现代码

class Solution {
public:
    int jumpFloorII(int number) {
        return pow(2, number - 1);
    }
};
目录
相关文章
|
10月前
1190:上台阶
1190:上台阶
|
19天前
|
算法
递归回溯解决迷宫问题
递归回溯解决迷宫问题
18 4
|
5月前
函数递归详解----跳台阶、斐波那契数列、汉诺塔问题
递归的思想:把⼀个⼤型复杂问题层层转化为⼀个与原问题相似,但规模较⼩的⼦问题来求解;直到⼦问题不能再被拆分,递归就结束了。所以递归的思考⽅式就是把⼤事化⼩的过程。递归中的递就是递推的意思,归就是回归的意思。
|
10月前
|
机器学习/深度学习
青蛙跳台阶(递归)
青蛙跳台阶(递归)
65 0
|
12月前
汉诺塔?爬楼梯?斐波那契?知道递归就够了
汉诺塔?爬楼梯?斐波那契?知道递归就够了
69 0
|
机器学习/深度学习 算法 C语言
函数递归+青蛙跳台阶——“C”
函数递归+青蛙跳台阶——“C”
你是真的“C”——函数递归详解青蛙跳台阶
手把手教学——函数递归详解汉诺塔+青蛙跳台阶问题
81 0
你是真的“C”——函数递归详解青蛙跳台阶
|
C语言
【C】青蛙跳台阶和汉诺塔问题(递归)
【C】青蛙跳台阶和汉诺塔问题(递归)
95 0
【C】青蛙跳台阶和汉诺塔问题(递归)
|
算法
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)