递归:函数调用自身
递归函数的特点
- 一个函数在内部调用自己
代码特点
- 函数内部的代码是相同的,只是针对参数不同,处理的结果不同
- 当参数满足一个条件是,函数不再执行。通常被称作递归的出口,很重要,否则会出现死循环。
def sum_numbers(num):
print(num)
# 递归的出口,当参数满足某一个条件时,不再执行函数
if num == 1:
return
sum_numbers(num-1)
sum_numbers(3)
执行结果:
图解上述递归代码:
递归案例 —— 计算数字累加
需求
- 定义一个函数sum_numbers
- 能够接收一个整形的参数
- 计算1+2+···+num的结果
def sum_numbers(num):
# 出口
if num == 1:
return 1
# 数字累加
# 假设sum_numbers能够正确处理1+2+···+num-1
temp = sum_numbers(num - 1)
# 核心代码两个数字相加
return num + temp
print(sum_numbers(2))
print(sum_numbers(3))
print(sum_numbers(100))
执行结果:
图解上述递归代码:
递归在处理不确定的循环条件的时候非常有用。
例如:遍历整个文件目录的结构