V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ansheng
V2EX  ›  Python

Python 全栈之路系列之递归

  •  
  •   ansheng ·
    anshengme · 2017-02-07 13:39:21 +08:00 · 1125 次点击
    这是一个创建于 2652 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    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)  # 调用计数器函数
    

    输出结果

    /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
    
    • 利用递归获取斐波那契数列中的第 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)
    

    输出结果

    /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
    

    原文链接

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1167 人在线   最高记录 6547   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:33 · PVG 02:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.