描述
有一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 数据范围:1≤n≤40
样例
输入
7
输出
21
代码:
def jump(n):
if n == 1:
return 1
elif n == 2:
return 2
else:
return jump(n-1) + jump(n-2)
n = int(input())
print(jump(n))
# 法2
def jump(n):
if n == 1:
return 1
elif n == 2:
return 2
dp = [0] * (n+1) # 创建一个长度为n+1的列表来保存子问题的解
dp[1] = 1
dp[2] = 2
for i in range(3, n+1):
dp[i] = dp[i-1] + dp[i-2] # 计算子问题的解,并保存在dp列表中
return dp[n] # 返回第n步的解
n = int(input())
print(jump(n))
代码解释:
def jump(n): if n == 1: return 1 elif n == 2: return 2 else: return jump(n-1) + jump(n-2)
- 这段代码定义了一个递归函数
jump
,该函数接受一个整数参数n
。- 第一个条件判断
if n == 1
,如果n
等于1,返回结果1。这是递归的结束条件之一,用于处理基本情况。- 第二个条件判断
elif n == 2
,如果n
等于2,返回结果2。这也是递归的结束条件之一,用于处理基本情况。- 如果以上两个条件都不满足,则执行
else
块中的代码。return jump(n-1) + jump(n-2)
表示递归调用jump
函数,传入n-1
和n-2
作为参数,并将两次递归调用的返回结果相加。n = int(input()) print(jump(n))
- 这部分代码获取用户输入的整数,并将其转换为整型数据,存储在变量
n
中。- 然后调用函数
jump(n)
,并将返回的结果打印输出。