乐趣区

关于python:Python函数调用自身的编程技巧递归

函数调用本身的编程技巧称为递归。

一、递归函数的特点

特点:

一个函数外部调用本人,函数外部能够调用其余函数,当然在函数外部也能够调用本人。

代码特点:

  1. 函数外部的代码是雷同的,只是针对参数不同,解决的后果不同
  2. 当参数满足一个条件时,函数不再执行。这个十分重要,通常被称为递归的进口,否则会呈现死循环

示例代码:

def sum_numbers(num):
    print(num)
    # 递归的进口很重要,否则会呈现死循环
    # 递归的进口:当参数满足肯定条件时,不再执行函数
    if num == 1:
        return

    # 本人调用本人
    sum_numbers(num - 1)


sum_numbers(3)

执行后果:

下面代码执行过程示意图:

文字解释:

解释器执行到第一行代码发现是一个函数后持续向下,来到第 13 行调用函数,回到第一行代码,输入 num 此时是 3,持续向下执行到判断语句不满足条件持续向下执行,来到第 9 行代码,调用函数此时参数是 num-1=2,来到第 1 行代码输入 num 是 2,持续向下执行到判断语句不满足条件持续向下执行,到第 9 行调用函数,此时参数是 2 -1=1,来到第 1 行输入 num 是 1,持续向下执行此时满足条件,呈现 return 前面的代码都不执行,而后返回到上一次调用函数时的代码,看调用函数上面有没代码,有就执行代码此时输入后果是实现 2,持续返回到上一次调用函数地位此时输入后果是实现 3,当代码全副执行完,回到最后第一次调用函数地位也就是第 13 行。

二、递归案例 – 计算数字累加

需要:

  1. 定义一个函数 sum_numbers
  2. 可能接管一个 num 的整数参数,
  3. 计算 1 +2+…num 的后果

示例代码:

def sum_numbers(num):
    # 1. 进口
    if num == 1:
        return 1

    # 2. 数字的累加 num+(1...num - 1)
    # 假如 sum_numbers 可能正确处理 1...num-1
    temp = sum_numbers(num - 1)

    return num + temp


# result = sum_numbers(1)
result = sum_numbers(100)
print(result)

执行后果:

外围重点是这个局部:做了一个假如

以上执行流程示意图:

提醒: 递归是一个编程技巧,首次接触递归会感觉有些吃力,在解决不确定的循环条件时,分外的有用,例如遍历整个文件目录的构造。

以上就是对递归函数的相干介绍,前面开始介绍面向对象,这个也是编程语言中重要且难的知识点了,或者文字教程不会很通透然而也有 Python 视频教程在 python 自学网。

文章借鉴起源:python 自学网 www.wakey.com.cn/

退出移动版