递归调用改造成栈的方式

转换的规则是看递归函数的参数. 用什么参数就说明一直变化的是什么. 只要把这个调用参数放到栈中.不断的while循环就能转换成功.
 
转换的一点思维误区:
    递归的时候一般会有退出递归的条件.也就是满足特定条件return. 但是转换成栈的方式在while循环中千万不能有这种退出while循环的
    操作,栈的方式退出while的条件只有一个,就是栈为空的时候. (如果按照之前的方式退出while循环,就彻底结束所有栈的动作了)  至于在递归中退     
     出递归的条件,对应到栈中的位置应该是栈在入栈的时候, 判断对应的条件,看是否能入栈. 
 
 
关于递归与栈调用的应用场景的思考:
   如果次数较少或者是固定的次数,可以考虑递归的方式.  如果是有可能一直循环的操作,一定禁止用递归的方式,防止栈溢出. 
posted @ 2020-05-30 17:06  深入理解计算机系统  阅读(575)  评论(0编辑  收藏  举报