欢迎访问宙启技术站
智能推送

递归函数的原理及示例

发布时间:2023-06-21 04:29:17

递归函数是指调用自身函数的一种函数。递归函数的思想在编程中非常常见,尤其是在处理递归问题时,使用递归函数可以大大简化问题的解决。递归函数的原理非常简单,就是将一个大问题拆分为若干个子问题,每个子问题都可以通过递归函数来解决,最终把所有子问题的解合并成一个大问题的解。下面我们来看一个递归函数的示例。

示例1:阶乘问题

阶乘是一个非常常见的计算问题,即n的阶乘等于n乘以(n-1)的阶乘,特殊地,0的阶乘为1。这个问题可以使用递归函数来解决。

首先,我们定义一个函数fact(n),该函数的作用是计算n的阶乘。当n等于0时,返回1;否则,返回n乘以fact(n-1)。

def fact(n):
    if n == 0:
        return 1
    else:
        return n * fact(n-1)

接下来,我们来解读一下上面的代码。

第1到4行是函数定义,通过def关键字来定义函数fact(n)。注意,这里函数名称后面的括号里面的n是函数的参数,表示该函数需要一个整数n作为输入。

第2行是递归终止条件,即当n等于0时,说明问题已经不能再拆解,此时直接返回1。

第4行是递归函数的核心步骤,即使用n乘以fact(n-1)来计算n的阶乘。在这个式子里面,fact(n-1)就是递归函数的调用,它的作用是计算n-1的阶乘。

测试函数

# 测试函数
print(fact(0)) # 输出:1
print(fact(1)) # 输出:1
print(fact(5)) # 输出:120

这里我们使用print()函数来输出fact(0)、fact(1)和fact(5)的结果,分别是1、1和120。 运行结果如下:

1
1
120

示例2:斐波那契数列

斐波那契数列是指如下数列:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

其中第n个数是前两个数之和,例如,第3个数是1,因为0+1=1,第4个数是2,因为1+1=2。这个问题也可以使用递归函数来解决。

首先,我们定义一个函数fib(n),该函数的作用是计算斐波那契数列的第n个数。当n小于等于1时,返回n;否则,返回fib(n-1)加上fib(n-2)。

def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n-1) + fib(n-2)

接下来,我们来解读一下上面的代码。

第1到4行,同样是函数定义,通过def关键字来定义函数fib(n)。注意,这里函数名称后面的括号里面的n是函数的参数,表示该函数需要一个整数n作为输入。

第2行是递归终止条件,即当n小于等于1时,说明问题已经不能再拆解,此时直接返回n。

第4行是递归函数的核心步骤,即使用fib(n-1)加上fib(n-2)来计算斐波那契数列的第n个数。在这个式子里面,fib(n-1)和fib(n-2)就是递归函数的调用,它们的作用是计算斐波那契数列的第n-1和第n-2个数。

测试函数

# 测试函数
for i in range(10):
    print(fib(i), end=", ") # 输出:0, 1, 1, 2, 3, 5, 8, 13, 21, 34

这里我们使用for循环来输出斐波那契数列的前10个数,即fib(0)、fib(1)、fib(2)、...、fib(9)。 运行结果如下:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34,

总结

递归函数是Python编程中非常重要的一种函数,可以帮助我们解决许多复杂的问题。总的来说,递归函数的原理就是将一个大问题拆分为若干个子问题,每个子问题都可以通过递归函数来解决,最终把所有子问题的解合并成一个大问题的解。在编写递归函数时,需要注意递归终止条件的设置和递归函数的核心步骤的编写。