Python 全栈之路系列之递归

2017-02-07 13:39:21 +08:00
 ansheng

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

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

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

代码:

#!/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

原文链接

1129 次点击
所在节点    Python
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/338715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX