zoukankan      html  css  js  c++  java
  • Python 函数递归

    函数递归指的是重复 “直接调用或间接调用” 函数本身,这是一种函数嵌套调用的表现形式。

    • 直接调用: 指的是在函数内置,直接调用函数本身。

    • 间接调用: 两个函数之间相互调用间接造成递归。

    直接调用:
    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)
    
  • 相关阅读:
    理解C#系列 / 核心C# / 常量
    理解C#系列 / 核心C# / 变量
    理解C#系列 / C#语言的特性
    理解C#系列 / .NET体系结构
    利用DMZ对象保护全局变量
    随手翻的一道摩拜校招题
    关于为函数形参赋值和搜索变量标识符的云云
    竟然修改形参有这么可怕的后果!!
    牛得一逼的delete操作符
    屏蔽属性
  • 原文地址:https://www.cnblogs.com/baohanblog/p/12143047.html
Copyright © 2011-2022 走看看