ホームページ  >  記事  >  バックエンド開発  >  Python フルスタックロードシリーズ再帰

Python フルスタックロードシリーズ再帰

高洛峰
高洛峰オリジナル
2017-02-09 10:44:161189ブラウズ

いわゆる再帰とは、実際には、指定された条件が満たされるまで関数自体が関数を呼び出し、その後層ごとに関数を終了することを意味します。 たとえば、

昔々、山があって、そこにお寺がありました。山には年老いた僧侶がいて、若い僧侶に物語を語っていました。何の話ですか? 「むかしむかし、山があって、その山にお寺がありました。お寺に年老いた僧侶がいて、若い僧侶に物語を語っていました。その物語は何ですか?」山があって、その中にお寺があって、そのお寺に老僧がいて、その小さな僧侶に物語を話していました。 '"

  • 関数を使用してフィボナッチ数列を作成します

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 463680, 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

原文链接


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

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

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

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

フィボナッチ数列は上記のものです 2 つの数値を加算して次の数値を取得すると、コードは次のようになります以下に続きます

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

オリジナルtext link


いわゆる再帰とは、実際には、指定された条件が満たされるまで関数自体が関数を呼び出すことです。たとえば、関数はレイヤーごとに終了します。

昔々、山があって、その山にお寺がありました。お寺には年老いた僧侶がいて、若い僧侶に話をしていました。何の話ですか? 「むかしむかし、山があって、その山にお寺がありました。お寺に年老いた僧侶がいて、若い僧侶に物語を語っていました。その物語は何ですか?」山があって、その中にお寺があって、そのお寺に老僧がいて、その小さな僧侶に物語を話していました。 '"

🎜🎜関数を使用してフィボナッチ数列を作成します🎜🎜🎜🎜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🎜🎜🎜フィボナッチ数列は上記のものです 2 つの数値を加算して次の数値を取得すると、コードは次のようになります以下に続きます🎜rrreee🎜出力結果🎜rrreee🎜🎜🎜再帰を使用してフィボナッチ数列の10番目の数値を取得し、その値を呼び出し作者に返します🎜🎜🎜🎜コード: 🎜rrreee🎜出力結果🎜rrreee🎜詳しくはPythonの完全版をご覧ください-stack road シリーズ再帰関連記事は、PHP 中国語 Web サイトにご注意ください。 🎜🎜🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。