别院牧志知识库 别院牧志知识库
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2025 面试记录
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2025 面试记录
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 辨析

  • Sockets编程

  • Django

  • stackoverflow

  • Flask

  • 全栈之路

    • 基础篇

    • 进阶篇

      • Python 全栈之路系列之迭代器与生成器
      • Python 全栈之路系列之装饰器
      • Python 标准库系列之模块默认全局变量
      • Python 全栈之路系列之异常处理
      • Python 全栈之路系列之文件操作
      • Python 全栈之路系列之递归
      • Python 全栈之路系列之反射
      • Python 全栈之路系列之正则表达式 re 模块
      • Python 全栈之路系列之字符串格式化
    • 面向对象

    • 网络编程

    • 操作系统

    • 标准库

    • 第三方库

    • Python 全栈之路
  • 面试

  • 代码片段

  • 异步编程

  • 😎Awesome资源

  • PEP

  • Python工匠系列

  • 高阶知识点

  • Python 学习资源待整理
  • 设计模式

  • 好“艹蛋”的 Python 呀!
  • FIFO | 待学清单📝
  • pip 安装及使用
  • 数据分析

  • 源码阅读计划

  • OOP

  • 关于 python 中的 setup.py
  • 并行分布式框架 Celery
  • 七种武器,让你的代码提高可维护性
  • 使用 pdb 调试 Python 代码
  • 每周一个 Python 标准库
  • 🐍Python
  • 全栈之路
  • 进阶篇
佚名
2020-05-23

Python 全栈之路系列之递归

所谓递归其实就是函数本身调用函数,直到满足指定条件之后一层层退出函数, 例如

从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”

  • 利用函数编写一个斐波那契数列

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

斐波那契数列就是前面给两个数相加得到后面一个数,依次往后

代码如下

#!/usr/bin/env python
# _*_ coding: utf-8 _*_

def Counter(n1, n2):
    if n1 > 10000:  # 当要计算的值大于10000就退出
        return
    print("Counter:", n1)  # 输出当前计算到那个值了
    n3 = n1 + n2  # 第一个值加上第一个值等于第三个值
    Counter(n2, n3)  # 调用计数器函数,此时第一个值是调用函数传过来的最后一个值,而第二个值是计算出来的第三个值


Counter(0, 1)  # 调用计数器函数
1
2
3
4
5
6
7
8
9
10
11
12

输出结果

/usr/bin/python3.5 /home/ansheng/Documents/PycharmProjects/blogcodes/斐波那契.py
Counter: 0
Counter: 1
Counter: 1
Counter: 2
Counter: 3
Counter: 5
Counter: 8
Counter: 13
Counter: 21
Counter: 34
Counter: 55
Counter: 89
Counter: 144
Counter: 233
Counter: 377
Counter: 610
Counter: 987
Counter: 1597
Counter: 2584
Counter: 4181
Counter: 6765

Process finished with exit code 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  • 利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者

代码:

#!/usr/bin/env python
# _*_ coding: utf-8 _*_

def Counter(Index, Start, End):
    print("第%d次计算,第一个数字是%d,第二个数字是%d" % (Index, Start, End))
    if Index == 10:  # 如果要计算的值是10就退出
        return Start
    N = Start + End  # N等于第一个数加上第二个数
    Number = Counter(Index + 1, End, N)  # 继续调用计数器函数,End相当与传给函数的第一个数,N是传给函数的第二个数
    return Number


result = Counter(1, 0, 1)
print("得出的数字是:", result)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

输出结果

/usr/bin/python3.5 /home/ansheng/Documents/PycharmProjects/blogcodes/递归.py
第1次计算,第一个数字是0,第二个数字是1
第2次计算,第一个数字是1,第二个数字是1
第3次计算,第一个数字是1,第二个数字是2
第4次计算,第一个数字是2,第二个数字是3
第5次计算,第一个数字是3,第二个数字是5
第6次计算,第一个数字是5,第二个数字是8
第7次计算,第一个数字是8,第二个数字是13
第8次计算,第一个数字是13,第二个数字是21
第9次计算,第一个数字是21,第二个数字是34
第10次计算,第一个数字是34,第二个数字是55
得出的数字是: 34

Process finished with exit code 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
编辑 (opens new window)
#编码#递归
上次更新: 2024-07-23, 01:00:43
Python 全栈之路系列之文件操作
Python 全栈之路系列之反射

← Python 全栈之路系列之文件操作 Python 全栈之路系列之反射→

最近更新
01
2025 面试记录
05-28
02
提升沟通亲和力的实用策略
03-26
03
工作
07-15
更多文章>
Theme by Vdoing | Copyright © 2019-2025 IMOYAO | 别院牧志
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式