用python去编写递归程序
时间: 2023-08-29 16:12:42 浏览: 81
递归是一种在函数内部调用自身的编程技巧,它通常通过基本情况和递归情况来定义。下面是一个使用 Python 编写递归程序的示例:
1. 计算阶乘
阶乘是一个自然数的乘积,例如,5! = 5 x 4 x 3 x 2 x 1 = 120。下面是一个计算阶乘的递归程序:
```
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
```
2. 斐波那契数列
斐波那契数列是一个无限序列,其中每个数字都是前两个数字的和。例如,1, 1, 2, 3, 5, 8, 13, 21, ...。下面是一个计算斐波那契数列的递归程序:
```
def fibonacci(n):
if n == 0 or n == 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
```
3. 汉诺塔问题
汉诺塔问题是一个经典的递归问题,它涉及将一堆盘子从一个柱子移动到另一个柱子,每次只能移动一个盘子,并且大盘子不能放在小盘子上面。下面是一个解决汉诺塔问题的递归程序:
```
def hanoi(n, from_rod, to_rod, aux_rod):
if n == 1:
print("Move disk 1 from", from_rod, "to", to_rod)
return
hanoi(n-1, from_rod, aux_rod, to_rod)
print("Move disk", n, "from", from_rod, "to", to_rod)
hanoi(n-1, aux_rod, to_rod, from_rod)
```
以上是三个使用 Python 编写递归程序的示例,递归程序的优点是代码简洁易懂,但也容易出现递归深度过大的问题,需要注意程序的效率和内存使用。
阅读全文