Python递归函数的例子并加上注释
时间: 2023-06-04 14:02:31 浏览: 57
当然,我很乐意回答你的问题!以下是一个Python递归函数示例及其注释:
```
# 定义一个递归函数
def factorial(n):
# 如果n等于0或1,则返回1
if n == 0 or n == 1:
return 1
else:
# 递归调用并返回n乘以(n-1)的阶乘
return n * factorial(n-1)
# 调用递归函数并打印结果
print(factorial(5)) # 120
```
解释如下:
1. 首先,我们定义了一个名为“factorial”的递归函数,以计算给定数的阶乘。
2. 在函数中,我们检查n是否等于0或1,如果是,则直接返回1。
3. 如果n不等于0或1,则递归调用我们的函数,传递n-1作为参数,并将结果乘以n。这一步最终就是要求n的阶乘。
4. 当递归到n=1或n=0时,会开始一层一层地从递归中返回结果,直到最开始的函数调用也返回结果。
5. 最后,我们在主函数中调用递归函数,并打印计算出的结果。
希望这个示例有帮助,如果你有任何其他问题,请随时提出。
相关问题
用python写一个递归函数代码带上注释
当然可以为您提供一个递归函数的 Python 代码,并带上注释:
```python
# 定义一个递归函数,计算斐波那契数列的第 n 项值
def fibonacci(n):
if n <= 1: # 当 n 为 0 或 1 时,返回 n
return n
else:
return fibonacci(n-1) + fibonacci(n-2) # 递归调用本函数,返回前两项的和
# 调用函数,计算斐波那契数列的第 5 项
result = fibonacci(5)
print("斐波那契数列的第 5 项为:", result)
```
以上代码实现了递归计算斐波那契数列的第 n 项。当输入 n = 0 或 1 时,直接返回对应的结果;对于其他情况,则通过递归调用本函数分别计算前两项的和。注释也已经在代码中添加,希望可以帮到您。
递归回溯法求解0/1背包问题python语言完整代码加上注释
好的,以下是一份Python语言实现的递归回溯法求解0/1背包问题的完整代码,已经加上了注释说明:
```python
# 递归回溯法求解0/1背包问题
# 功能:给定物品重量列表和价值列表,背包容量,求能装入背包的最大价值
def knapsack(w, v, c):
"""
:param w: 一个列表,表示物品的重量
:param v: 一个列表,表示物品的价值
:param c: 背包的容量
:return: 能装入背包的最大价值
"""
n = len(w) # 物品个数
memo = [[-1] * (c + 1) for _ in range(n)] # 备忘录,用于记录之前计算过的状态
def dp(i, j):
"""
:param i: 当前考虑到第i个物品
:param j: 当前背包容量为j
:return: 能装入背包的最大价值
"""
if i == n: # 物品已经考虑完了
return 0
if memo[i][j] != -1: # 如果之前计算过,直接返回备忘录中的值
return memo[i][j]
res = dp(i + 1, j) # 不装第i个物品
if j >= w[i]: # 如果当前背包容量能装下第i个物品
res = max(res, v[i] + dp(i + 1, j - w[i])) # 装第i个物品
memo[i][j] = res # 记录备忘录
return res
return dp(0, c) # 从第0个物品开始考虑,背包容量为c
# 示例
w = [1, 2, 3] # 物品重量列表
v = [6, 10, 12] # 物品价值列表
c = 5 # 背包容量
print(knapsack(w, v, c)) # 输出结果:22
```
注释已经比较详细了,主要思路就是用递归回溯法,定义一个dp函数来求解能装入背包的最大价值,同时使用备忘录memo记录之前计算过的状态,避免重复计算。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)