Python递归小练习

递归算法是常见的基础算法之一,阶乘、青蛙跳台、兔子算法等便是递归算法中典型的例子。

1、阶乘

以6的阶乘为例,计算的过程如下图所示
在这里插入图片描述
Python代码实现如下:

def jiecheng(n):
    if n == 1:
        result = 1
    else:
        result = n * jiecheng(n - 1)
    return result

print(jiecheng(6))

2、青蛙跳台

### Python递归函数练习题示例 以下是一些关于Python递归函数的练习题及其实现代码示例: #### 示例 1:反转字符串 使用递归来反转一个字符串,例如将 `"hello"` 转换为 `"olleh"`。 ```python def reverse_string(s): if len(s) <= 1: return s else: return reverse_string(s[1:]) + s[0] print(reverse_string("hello")) # 输出: "olleh" ``` 此代码通过递归调用自身来逐步处理字符串的每个字符[^1]。 #### 示例 2:查找数组中的最大值 给定一个数组,使用递归来找到其中的最大值。 ```python def find_max(arr, index=0, current_max=None): if current_max is None and index == 0: current_max = arr[0] if index == len(arr): return current_max if arr[index] > current_max: current_max = arr[index] return find_max(arr, index + 1, current_max) array = [3, 5, 7, 2, 8] print(find_max(array)) # 输出: 8 ``` 这段代码通过递归逐步比较数组中的元素,最终返回最大值。 #### 示例 3:计算斐波那契数列 实现一个递归函数来计算斐波那契数列的第 `n` 项。 ```python def fibonacci_recursive(n): if n <= 2: return 1 else: return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2) n = int(input("请输入斐波那契数列位置n:")) number = fibonacci_recursive(n) print(f"Fibonacci number is {number}") ``` 该函数通过递归定义了斐波那契数列的规则,并能够计算出指定位置的数值[^2]。 #### 示例 4:提取嵌套列表中的所有名称 给定一个嵌套列表,使用递归提取所有的 `"name"` 值,并生成带有层级关系的结果。 ```python def extract_names(data, prefix=""): result = [] for item in data: if isinstance(item, dict): if "name" in item: full_name = f"{prefix}/{item['name']}" if prefix else item['name'] result.append(full_name) elif isinstance(item, list): result.extend(extract_names(item, prefix)) return result nested_list = [ {"name": "小红"}, [ {"name": "小明"}, [ {"name": "小花"} ] ], {"name": "小黑"} ] print(extract_names(nested_list)) # 输出: ['小红', '小红/小明', '小红/小明/小花', '小红/小黑'] ``` 上述代码通过递归遍历嵌套结构,拼接层级关系并生成结果[^3]。 #### 示例 5:计算阶乘 实现一个递归函数来计算一个整数的阶乘。 ```python def factorial(n): if n == 0 or n == 1: return 1 else: return n * factorial(n - 1) print(factorial(5)) # 输出: 120 ``` 此代码展示了如何通过递归计算一个整数的阶乘。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里有阳光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值