根据近几天调试一个代码的经验,发现递归函数可分为以下两类:
1.遍历型;
2.指定结束型;
遍历型的一个代表是遍历树,它是访问到所有结点;
指定结束型的一个代表是求解斐波那契,它是到达一个指定条件后层层退出。
对于指定结束型,必须在分支前(如for循环次数就是分支次数),加上判断是否达到指定结束条件的语句,否则,退回时,函数会回到分支处然后执行没被执行的分支,
这样就会改变指定结束标计量(如flag==1中的flag)可能还会改变其它的量,会造成逻辑错误,并且增加运算量。
根据近几天调试一个代码的经验,发现递归函数可分为以下两类:
1.遍历型;
2.指定结束型;
遍历型的一个代表是遍历树,它是访问到所有结点;
指定结束型的一个代表是求解斐波那契,它是到达一个指定条件后层层退出。
对于指定结束型,必须在分支前(如for循环次数就是分支次数),加上判断是否达到指定结束条件的语句,否则,退回时,函数会回到分支处然后执行没被执行的分支,
这样就会改变指定结束标计量(如flag==1中的flag)可能还会改变其它的量,会造成逻辑错误,并且增加运算量。