递归分析(python语言实现)

def go(i):
    if 0 == i:
        return
    else:
        print("递归_head", i - 1)
        go(i - 1)
        print("递归_foot",i - 1)
go(3)
# 结果
# 递归_head 2
# 递归_head 1
# 递归_head 0
# 递归_foot 0
# 递归_foot 1
# 递归_foot 2
#分析执行过程:
#1、代码执行第8行 go(3),代码执行第1行条件不满足执行第5行
# 2、打印递归_head (3-1):结果是:递归_head 2;
# 3、执行第6行 再次调用go(i-1) :go(3-1) :即 go(2)
#4、程序执行第1行 go(2)
#5、条件不满足 执行第5行 打印 递归_head (2-1) :结果 递归_head 1
#6、程序执行第6行,再次调用go(2-1) :即 go(1)
#7、程序执行第1行 go(1)
#8、条件不满足 执行第5行 打印 递归_head (1-1) :结果 递归_head 0
#9、程序执行第6行,再次调用go(1-1) :即 go(0)
## 10 很关键的一步,程序执行第1行 go(0)
## 11、程序执行第2行,次时条件满足进行返回 return ,因为函数执行开辟的是栈
# 所以要返回,进行弹栈,执行 递归_foot 0,在弹出递归_foot 1,在弹出递归_foot 2


图形分析:

 

posted @ 2018-04-01 12:38  马鞍山  阅读(308)  评论(0编辑  收藏  举报