一、实验(训)目的
1、理解并熟练使用序列解包。
2、理解递归函数工作原理。
3、能够编写递归函数代码解决实际问题。
4、理解Python 字典的用法。
二、实验(训)内容
假设一段楼梯共15 个台阶,小明一步最多能上3 个台阶。编写程序计算小明上这段楼梯一共有多少种方法。要求给出递推法和递归法两种代码。
三、实验(训)结果
(一)实验代码
#方法一 递归法
def demo(n):
d={1:1,2:2,3:4}
if n in d.keys():
return d[n]
else:
return demo(n-1)+demo(n-2)+demo(n-3)
print(demo(15))
#方法二 递推法
def demo(n): # n最少为3,否则输出4错误
a=1
b=2
c=4
for i in range(n-3):
c,b,a=a+b+c,c,b
return c
print(demo(15))
(二)结果图片
方法一 递归法
方法二 递推法
(三)结果分析
Python中的递归与递推算法各具特色。递归算法通过函数自调用解决问题,结构清晰但可能导致栈溢出;递推算法则利用已知信息逐步推导未知信息,通常效率更高且更易于理解。两者在不同情境下各有优势,选择时需根据具体问题权衡。