Python函数-递归使用
递归是指函数可以调用自身,通过重复调用函数的方式解决复杂问题。在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。
