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. 找出数组中的最大值
递归地找出数