Python笔记(22)递归

    技术2026-03-17  6

    #!/user/bin/env python # -*- coding:utf-8 -*- # author:berlin # 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 # 递归的特性: # (1)必须有一个明确的结束条件 # (2)每次进入更深一层的递归时,问题规模相比上次递归都应有所减少。 # (3)递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构 # 实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是 # 无限的,所以,递归调用的次数过多,会导致栈溢出。) # 递归案例1:不断的除以2。定义一个函数,调用时调用回自身。 # def calc(n): # print(n) # return calc(n/2) # calc(10) # 最后会报一个错误:RecursionError: maximum recursion depth exceeded while calling a Python object # 这个错误说明递归的最大次数已达到。 # 递归案例2:查看递归允许的最大次数 # def calc(n): # print(n) # return calc(n+1) # calc(0) # 故,递归最大的次数是999 # 递归案例3: def calc(n): print(n) if int(n/2) > 0: return calc(int(n/2)) calc(10)
    Processed: 0.011, SQL: 9