一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。
时间: 2023-05-31 07:20:58 浏览: 354
剑指Offer:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
5星 · 资源好评率100%
### 回答1:
这是一道经典的动态规划问题。假设跳上n级台阶的跳法有f(n)种,那么青蛙可以从n-1级台阶跳上来,也可以从n-2级台阶跳上来。因此,f(n) = f(n-1) + f(n-2)。同时,当n=1时,只有一种跳法;当n=2时,有两种跳法。因此,可以用递归或循环的方式求解f(n)。
### 回答2:
这是一道经典的递归问题。
我们假设青蛙跳上一个n级的台阶总共有f(n)种跳法。
当n=1时,青蛙只能跳一步,所以f(1)=1;
当n=2时,青蛙可以跳一步一次或者直接跳两步,所以f(2)=2;
当n>2时,青蛙第一步可以选择跳1级或者跳2级,如果选择跳1级,则还剩下n-1级台阶需要跳,此时的跳法数为f(n-1);如果选择跳2级,则还剩下n-2级台阶需要跳,此时的跳法数为f(n-2)。所以,青蛙跳上n级台阶的总跳法数为f(n)=f(n-1)+f(n-2)。
最终答案可以通过递归的方法求解,也可以通过循环迭代的方法求解。以下是使用循环迭代求解的代码实现:
def jumpFloor(n):
if n == 1:
return 1
if n == 2:
return 2
fn_1 = 2
fn_2 = 1
for i in range(3, n+1):
fn = fn_1 + fn_2
fn_2 = fn_1
fn_1 = fn
return fn
print(jumpFloor(10)) # 输出:89,即青蛙跳上一个10级的台阶总共有89种跳法。
### 回答3:
对于青蛙每一次跳跃,它可以跳上1级台阶,也可以跳上2级台阶。假设青蛙跳跃n级台阶的跳法有f(n)种。那么,当它跳上1级台阶后,它还需要跳f(n-1)次才能到达n级台阶;当它跳上2级台阶后,它还需要跳f(n-2)次才能到达n级台阶。因此,它跳上n级台阶的跳法数目就等于跳上n-1级台阶的跳法数目加上跳上n-2级台阶的跳法数目。可以用以下公式表达:
f(n) = f(n-1) + f(n-2)
根据此公式,我们可以列出n级台阶的跳法数目如下:
当n=1时,只有一种跳法,即跳1级台阶,此时f(1)=1;
当n=2时,可以跳2次1级台阶,或者一次跳2级台阶,此时f(2)=2;
当n=3时,可以从f(2)跳一次1级台阶,或者从f(1)跳一次2级台阶,此时f(3)=f(2)+f(1)=3;
当n=4时,可以从f(3)跳一次1级台阶,或者从f(2)跳一次2级台阶,此时f(4)=f(3)+f(2)=5;
以此类推,可以得到n级台阶的跳法数目。
综上,青蛙跳上n级台阶的跳法总数为f(n)。
阅读全文