Pythonの再帰関数

#再帰関数:
再帰関数は、式のネストされた関数呼び出しの形で繰り返される「コールへの直接または間接呼び出し」機能自体を指します。

  • 直接呼び出しは:組み込み関数、ダイレクトコール機能自体を指します。

  • 間接呼び出し:2の間で互いに間接的に再帰関数を呼び出します。

直接调用:
def foo():
    print('from foo')
foo()

间接调用:
def foo():
    print('from foo')
    bar()
    
def bar():
    print('from bar')
    foo()
foo()
了解:
        python中有递归默认深度: 限制递归次数
        998, 1000
        PS: 但是在每一台操作系统中都会根据硬盘来设置默认递归深度。

        获取递归深度: 了解
            sys.getrecursionlimit()

        设置递归深度: 了解
            sys.setrecursionlimit(深度值)
注意: 单纯的递归调用时没有任何意义的。
想要递归有意义,必须遵循两个条件:
    - 递推:
        指的是重复地执行, 每一次执行都要拿到一个更接近于结果的结果,
        递推必须要有一个终止条件,否则无限递归。

    - 回溯:
        当递推找到一个终止条件后,开始一步一步往上回溯。

    age(5) == age(4) + 2
    age(4) == age(3) + 2
    age(3) == age(2) + 2
    age(2) == age(1) + 2
    age(1) == 18  # 回溯终止的结果
    #result:age(n) = age(n - 1) + 2
方式一:    
def age(n):
    if n == 18  
        return 18
    else:
        return age(n - 1) + 2  #age2
res=age(5)
print(res)
>>>26

方式二:#三元表达式
def age(n):
    18 if n == 18 else age(n-1)+2
res=age(5)
print(res)

おすすめ

転載: www.cnblogs.com/baohanblog/p/12143047.html
おすすめ