Python中15个递归函数经典案例解析

在这里插入图片描述

1. 阶乘计算

阶乘是一个常见的递归应用,定义为n! = n * (n-1) * … * 1。

def factorial(n):  
    if n == 0:  
        return 1  
    else:  
        return n * factorial(n - 1)  
  
print(factorial(5))  # 输出: 120  

2. 斐波那契数列

斐波那契数列的每一项都是前两项的和。

def fibonacci(n):  
    if n <= 1:  
        return n  
    else:  
        return fibonacci(n - 1) + fibonacci(n - 2)  
  
print(fibonacci(10))  # 输出: 55  

3. 汉诺塔问题

汉诺塔是一个经典的递归问题,涉及将多个盘子从一个柱子移动到另一个柱子。

def hanoi(n, source, target, auxiliary):  
    if n > 0:  
        hanoi(n - 1, source, auxiliary, target)  
        print(f"Move disk {n} from {source} to {target}")  
        hanoi(n - 1, auxiliary, target, source)  
  
hanoi(3, 'A', 'C', 'B')  

4. 幂运算

计算a的n次方。

def power(a, n):  
    if n == 0:  
        return 1  
    elif n % 2 == 0:  
        return power(a * a, n // 2)  
    else:  
        return a * power(a, n - 1)  
  
print(power(2, 10))  # 输出: 1024  

5. 数组求和

递归地计算数组元素的总和。

def array_sum(arr):  
    if not arr:  
        return 0  
    else:  
        return arr[0] + array_sum(arr[1:])  
  
print(array_sum([1, 2, 3, 4]))  # 输出: 10  

6. 字符串反转

使用递归来反转字符串。

def reverse_string(s):  
    if len(s) <= 1:  
        return s  
    else:  
        return reverse_string(s[1:]) + s[0]  
  
print(reverse_string("hello"))  # 输出: "olleh"  

7. 找出数组中的最大值

递归地找出数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值