函数-函数递归

同样的逻辑,当在结果之上再执行此逻辑,即可用递归。

  1. 必须有明确终止条件
  2. 每次执行,问题规模都应该减少
  3. 递归效率不高,层数多比较占内存,函数调用是通过栈实现

先吃梨子

def func(num):
    print(num)
    if num > 0:
        num=int(num/2)
        func(num)
func(10)

Python限制递归层数为1000,没个递归都会消耗一定内存

查看最大限制:

import sys
print(sys.getrecursionlimit())

递归退出分析

递归退出是从最底层开始退出

def func(num):
    print(num)
    if num > 0:
        num=int(num/2)
        func(num)
    #验证推出层级
    print(num)
func(10)

递归返回值

给一个数字,除5次,无返回值方式

def calc(n,c):
    print(n,c)
    if c < 5:
        n=int(n/2)
        c+=1
        calc(n,c)

calc(100,0)

获取返回值,上一层拿到下一层结果

def calc(n,c):
    if c < 5:
        n=int(n/2)
        c+=1
        #返回执行结果到上一层,无该return则最底层返回到上一层,但上一层无法返回给它的上一层
        return calc(n,c)
    else:
        #返回最底层执行结果
        return n

 

posted @ 2018-04-11 07:44  丫丫625202  阅读(127)  评论(0编辑  收藏  举报