zoukankan      html  css  js  c++  java
  • python基础-函数递归

    函数递归

    概念:直接或间接地重复调用函数本身,是一种函数嵌套调用的表现形式。

    直接调用:在函数内部,直接调用函数本身

    def foo():
        print("这是foo函数")
        foo()
        
    foo()  # 进入死循环
    

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

    def a_func():
        print("这是a_func函数")
        b_func()
        
    def b_func():
        print("这是b_func函数")
        a_func()
        
    a_func()
    

    话说,大家千万不要执行以上代码!!!!电脑配置不好,宕机了的,不要来找我!以上两个例子都陷入了死循环。而这确实是递归!重点来了!

    单纯递归调用时,没有任何意义

    如果想要有意义,必须遵循两个条件:

    1. 回溯:重复地执行,每一次执行都要拿到一个更接近结果的结果。回溯必须要有一个明确的终止条件
    2. 递推:当回溯找到一个终止条件后,开始一步一步往上递推。
    def age(n):
        if n == 1:
            return 18
        # 此处必须写上return 才能实现递推
        return age(n - 1) + 2
    
    
    print(age(5))
    

    扩展

    递归的经典案例习题
    1、递归求阶乘 1!+2!+3!+4!+5!+...+n!
    2、使用递归打印斐波那契数列,(前两个数的和得到第三个数,如:0 1 1 2 3 5 8...)
    3、一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值
    
  • 相关阅读:
    函数参数
    文件操作
    is,数据类型补充,set,深浅拷贝
    is,==区别,编码转换
    列表,元祖,range
    字典,解构
    编码,基础数据类型 int str bool,for循环
    while循环,格式化输出,运算符
    java7中使用透明时与输入法冲突
    TC SRM 597 DEV2
  • 原文地址:https://www.cnblogs.com/xiaodan1040/p/11869064.html
Copyright © 2011-2022 走看看