递归需要保存现场,所以会导致栈不断加深。因此如果改循环,那么也需要创建栈来保存现场。
书写递归函数时,递归函数的退出是由于不满足递归条件而导致的,但从结果上来看即是现场的退出。因此改为循环时,循环条件可以是现场数量是否为0,即栈元素是否为零。
进入一次递归函数可以看成是入栈,退出一次递归函数则是出栈。
可以根据形参的数量创建相应数量的栈,各个栈用于保存相应的形参。如果形参中包含这样的参数——该参数代表的内存贯穿整个递归——那么该参数可以不放入栈元素中。
递归函数体即为循环体。
时间: 2024-10-17 06:32:04