递归:函数调用自身

递归函数的特点

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

代码特点

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

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