递归:函数调用自身

递归函数的特点

  • 一个函数在内部调用自己

代码特点


  • 函数内部的代码是相同的,只是针对参数不同,处理的结果不同
  • 当参数满足一个条件是,函数不再执行。通常被称作​递归的出口​,很重要,否则会出现死循环。

def sum_numbers(num):
print(num)
# 递归的出口,当参数满足某一个条件时,不再执行函数
if num == 1:
return
sum_numbers(num-1)


sum_numbers(3)

执行结果:

Python:学习笔记之函数的递归_文件目录

图解上述递归代码:

Python:学习笔记之函数的递归_函数调用_02

递归案例 —— 计算数字累加

需求


  1. 定义一个函数sum_numbers
  2. 能够接收一个整形的参数
  3. 计算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))

执行结果:

Python:学习笔记之函数的递归_函数调用_03

图解上述递归代码:

Python:学习笔记之函数的递归_函数调用_04

递归在处理不确定的循环条件的时候非常有用。
例如:遍历整个文件目录的结构