递归调用改造成栈的方式
转换的规则是看递归函数的参数. 用什么参数就说明一直变化的是什么. 只要把这个调用参数放到栈中.不断的while循环就能转换成功.
转换的一点思维误区:
递归的时候一般会有退出递归的条件.也就是满足特定条件return. 但是转换成栈的方式在while循环中千万不能有这种退出while循环的
操作,栈的方式退出while的条件只有一个,就是栈为空的时候. (如果按照之前的方式退出while循环,就彻底结束所有栈的动作了) 至于在递归中退
出递归的条件,对应到栈中的位置应该是栈在入栈的时候, 判断对应的条件,看是否能入栈.
关于递归与栈调用的应用场景的思考:
如果次数较少或者是固定的次数,可以考虑递归的方式. 如果是有可能一直循环的操作,一定禁止用递归的方式,防止栈溢出.