递归内存流程(栈)
栈 后进先出 (堆 开辟内存空间时 去堆里取 ) (查看函数压栈执行流程 http://pythontutor.com/visualize.html#mode=edit)
函数执行需要压栈 函数所使用的变量也要压栈 函数执行完函数及其数据要弹出数据消亡(局部变量函数调用时创建,调用结束时消亡)
栈跟线程相关 , 不同线程的栈互不干扰

递归 (分为 递 、归 先递 后 归)
函数直接或间接调用自身就是递归
递归要有边界条件、递归前进段、递归返回段
递归一定要有边界条件
边界不满足时,递归前进 边界满足时,递归返回

总结

        递归相对运行效率低,每一次调用函数都要开辟栈帧
        递归有深度限制,Cpython限制1000
        绝大多数递归,都可以用循环实现

练习题:
递归_第1张图片
递归_第2张图片
递归_第3张图片