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

Python函数-递归使用

发布时间:2023-06-06 05:05:31

递归是指函数可以调用自身,通过重复调用函数的方式解决复杂问题。在Python中,递归是一种非常常见的技术,它可以帮助我们编写更简洁、可读性更高的代码。在本篇文章中,我们将学习如何使用递归函数。

1. 递归函数的定义

递归函数是指在函数调用中调用自身函数的一种技术。递归函数通常需要包含一个退出条件,以避免无限递归的情况。递归函数可以被用于解决很多问题,如阶乘、斐波那契数列等。

2. 使用递归求解阶乘

阶乘是指一个正整数n的阶乘是所有小于或等于n的正整数的乘积。下面的代码展示了如何使用递归来求解阶乘:

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

在这个函数中,如果输入的参数n等于1,则函数将返回1。否则,函数将返回n与函数factorial(n-1)的返回值的乘积。这个函数会重复调用自己,直到n等于1为止。

我们可以使用以下代码测试这个函数:

print(factorial(5))

这个代码将输出120,因为5的阶乘是120。

3. 使用递归求解斐波那契数列

斐波那契数列是指某个数等于前两个数的和。斐波那契数列的前几个数字是0、1、1、2、3、5、8、13等。下面的代码展示了如何使用递归来求解斐波那契数列:

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

在这个函数中,如果输入的参数n小于或等于1,则函数将返回n。否则,函数将返回函数fibonacci(n-1)和函数fibonacci(n-2)的返回值的和。这个函数将递归地执行直到n小于或等于1为止。

我们可以使用以下代码测试这个函数:

print(fibonacci(7))

这个代码将输出13,因为斐波那契数列的第七个数字是13。

4. 使用递归实现嵌套列表求和

递归函数可以用于解决许多问题,包括嵌套列表求和。下面的代码展示了如何使用递归解决这个问题:

def list_sum(lst):
    sum = 0
    for i in lst:
        if isinstance(i, list):
            sum += list_sum(i)
        else:
            sum += i
    return sum

lst = [1, 2, [3, 4, [5, 6]], 7, [8], 9]
print(list_sum(lst))

在这个代码中,首先声明变量sum,用来计算所有数字的和。然后,我们使用循环遍历列表中的每一个元素。如果当前元素是一个列表,则递归调用函数并将返回值加到sum中。否则,直接将当前元素加到sum中。最后,返回sum的值。

我们可以使用以下代码测试这个函数:

lst = [1, 2, [3, 4, [5, 6]], 7, [8], 9]
print(list_sum(lst))   

这个代码将输出45,因为这个列表的所有数字的和是45。