函数调用自身的编程技巧称为递归。
函数内部可以调用其他函数,当然在函数内部也可以调用自己。
递归的特点
示例代码:
def sum_numbers(num):
print(num)
# 递归的出口很重要,否则会出现死循环
if num == 1:
return
# 自己调用自己
sum_numbers(num - 1)
sum_numbers(3)
# 3
# 2
# 1
递归分为两个重要的阶段:递推+回溯。
由于无限的递归调用会占用大量的内存,因此 python 对函数的递归调用的深度做了限制,当递归调用的次数达到限制时,就会抛出异常。要避免出现这种情况,就必须让递归调用在满足某个特定条件下终止。
递归案例
需求:计算数字累加,接收一个 num 的整数参数,计算 1 + 2 + ... num 的结果。
def sum_numbers(num):
if num == 1:
return 1
# 假设 sum_numbers 能够完成 num - 1 的累加
temp = sum_numbers(num - 1)
# 函数内部的核心算法就是两个数字的相加
return num + temp
print(sum_numbers(2))
# 3
递归是一个编程技巧,初次接触递归会感觉有些吃力!
在处理不确定的循环条件时,使用递归格外有用,例如:遍历整个文件目录的结构。
原文:https://www.cnblogs.com/studyming/p/13534742.html