2024年6月2日发(作者:)

递归函数简单实例

递归函数是一种自我调用的函数,它在运行过程中会重复调用自身,

直到满足一定条件时停止。递归函数一般由两部分组成:基准情形和递归

情形。基准情形指的是当满足一定条件时停止递归,递归情形指的是当不

满足基准情形时继续进行递归调用。

下面我将介绍几个简单的递归函数实例。

1.计算阶乘

阶乘是指自然数n乘以比它小的所有自然数的乘积。使用递归函数可

以很方便地计算阶乘。

```python

def factorial(n):

if n == 0:

return 1

else:

return n * factorial(n-1)

```

在上面的递归函数中,基准情形是当n等于0时,返回1;递归情形

是当n大于0时,返回n与factorial(n-1)的乘积。函数会一直递归调

用自身,直到n等于0。

2.斐波那契数列

斐波那契数列是指前两个数为1,从第三个数开始,每个数都是前两

个数的和。

```python

def fibonacci(n):

if n <= 0:

return 0

elif n == 1 or n == 2:

return 1

else:

return fibonacci(n-1) + fibonacci(n-2)

```

在上面的递归函数中,基准情形是当n小于等于0时,返回0;当n

等于1或2时,返回1;递归情形是当n大于2时,返回fibonacci(n-1)

与fibonacci(n-2)的和。函数会一直递归调用自身,直到n小于等于2

3.迷宫问题

假设有一个n×n的迷宫,每个位置可以是空地(用0表示)或是墙壁

(用1表示)。求从(0,0)位置到(n-1,n-1)位置的路径。

```python

def find_path(maze, x, y, path):

n = len(maze)

if x == n-1 and y == n-1:

return True

elif x >= 0 and x < n and y >= 0 and y < n and maze[x][y] ==

0:

((x, y))

maze[x][y] = 2

if find_path(maze, x+1, y, path) or find_path(maze, x, y+1,

path):

return True

return False

```

在上面的递归函数中,基准情形是当x和y分别等于n-1时,表示已

经到达目标位置,返回True;递归情形是当当前位置为可行走的空地时,

尝试向下和向右移动,如果有一条路径能够到达目标位置,返回True;

如果当前位置不是可行走的空地,或者两条路径均不能到达目标位置,将

当前位置从路径中去除,返回False。函数会一直递归调用自身,尝试不

同的路径。

这些是递归函数的简单实例,递归函数可以解决许多复杂的问题。但

需要注意的是,在使用递归函数时,一定要注意设置好基准情形,避免造

成无限循环。