专栏首页python3python_函数递归

python_函数递归

函数递归

函数递归:函数的递归调用,即在函数调用的过程中,又直接或间接地调用了函数本身

# import sys
# print(sys.getrecursionlimit())
# sys.setrecursionlimit(10000)
# print(sys.getrecursionlimit())

直接调用

def foo():
    print('from foo')
    foo()

foo()

间接调用

def bar():
    print('from bar')
    foo()


def foo():
    print('from foo')
    bar()


foo()
递归分为两个阶段
1、回溯:
    注意:一定要在满足某种条件结束回溯,否则的无限递归
2、递推

总结:
1、递归一定要有一个明确地结束条件
2、没进入下一次递归,问题的规模都应该减少
3、在python中没有尾递归优化
# age(5)=age(4)+2
# age)4)=age(3)+2
# age(3)=age(2)+2
# age(2)=age(1)+2
# age(1)=18

# age(n)=age(n-1)+2 # n > 1
# age(n)=18            #n=1
#

# def age(n):
#     if n == 1:
#         return 18
#     return age(n-1)+2 #age(4)+2
#
# age(5)



items=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,]]]]]]]]]]
def tell(l):
    for item in l:
        if type(item) is not list:
            print(item)
        else:
            tell(item)

tell(items)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python_day1

    Unicode :2字节 -->UTF-8  (表示英文 用一个字节;表示中文 用3个字节)

    py3study
  • Python入门基础--猜年龄

    py3study
  • python之day1

      初学python会有学python2还是python3的困惑,因为现在公司的实际环境下大部分还是用2.7编写的代码,python3.X又向下不兼容2.X,我...

    py3study
  • 浅谈JavaScript词法分析步骤

    JavaScript代码运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤:

    用户1432189
  • python_day1

    Unicode :2字节 -->UTF-8  (表示英文 用一个字节;表示中文 用3个字节)

    py3study
  • Python:一文读懂如何使用面向对象编程

    在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据,将某些功能代码封装到函数中,日后便无需重复...

    MySQL轻松学
  • 史上最全Python面向对象编程 转

    在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据,将某些功能代码封装到函数中,日后便无需重复...

    双面人
  • 史上最全 Python 面向对象编程

    在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据,将某些功能代码封装到函数中,日后便无需重复...

    马哥linux运维
  • javascript变量和操作符

    天天_哥
  • python之day1

      初学python会有学python2还是python3的困惑,因为现在公司的实际环境下大部分还是用2.7编写的代码,python3.X又向下不兼容2.X,我...

    py3study

扫码关注云+社区

领取腾讯云代金券