递归语句的编程通常包含以下步骤:
定义基本情况:
这是递归停止的条件,防止无限递归下去。基本情况通常是问题规模最小的情况,可以直接返回结果。
定义递归情况:
这是函数调用自己的情况,每次调用都向基本情况靠近一步。在递归情况中,问题会被分解为一个或多个更小的子问题。
递归调用:
在递归函数中,函数会调用自身来解决问题的一部分。每次递归调用都会将问题分解为更小的子问题,然后递归调用自身来解决这些子问题。
参数传递:
在递归调用中,需要将适当的参数传递给递归函数。这些参数通常用于定义问题的规模或状态,并且在每次递归调用中进行更新。
返回值:
递归函数通常需要返回一个值,该值可以是解决问题的部分结果或最终结果。在每次递归调用中,函数会将子问题的结果合并或处理,然后返回给上一级调用。
计算阶乘
```python
def factorial(n):
基本情况
if n == 0 or n == 1:
return 1
递归情况
else:
return n * factorial(n - 1)
print(factorial(5)) 输出: 120
```
斐波那契数列
```python
def fibonacci(n):
基本情况
if n <= 1:
return n
递归情况
else:
return fibonacci(n - 1) + fibonacci(n - 2)
for i in range(10):
print(fibonacci(i), end=' ') 输出: 0 1 1 2 3 5 8 13 21 34
```
目录遍历
```python
import os
def list_files(path):
if os.path.isfile(path): 基本情况
return [path]
files = []
for item in os.listdir(path):
files.extend(list_files(os.path.join(path, item))) 递归调用
return files
示例调用
print(list_files('/path/to/directory'))
```
递归下降法计算斐波那契数列
```python
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
print(fibonacci(10)) 输出: 55
```
递归计算斐波那契数列(迭代法)
```python
def fibonacci(n):
if n <= 1:
return n
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return b
print(fibonacci(10)) 输出: 55
```
递归计算组合数
```python
def combination(n, k):
if k == 0 or k == n:
return 1
else:
return combination(n - 1, k - 1) + combination(n - 1, k)
print(combination(5, 2)) 输出: 10
```
递归计算汉诺塔
```python
def hanoi(n, source, target, auxiliary):
if n > 0:
将n-1个盘子从source移到auxiliary
hanoi(n - 1, source, auxiliary, target)
将第n个盘子从source移到target
print(f"Move disk {n} from {source} to {target}")
将n-1个盘子从auxiliary移到target
hanoi(n - 1, auxiliary, target, source)
示例调用
hanoi(3, 'A', 'C', 'B')
```
递归计算最大公约数