递归与迭代的选择 递归副作用
# 递归与循环的选择
# 递归受制深度,循环可以无限
都需要
循环地执行:迭代是显示地使用一个循环结构,而递归通过重复地进行函数调用来实现循环。
终止测试;当循环条件为假时迭代结束,当遇到基线条件时递归结束
迭代
基于循环结构
递归
基于选择结构
迭代
改变计数器变量直至它的值使得循环继续条件为假
递归
不断地将问题的规模逐渐变小直至达到基线条件
副作用
迭代
忽略
递归
不断地执行函数调用机制,产生很大的函数调用开销,从而在处理器的时间和存储器的空间两方面付出很大的代价;
每一次递归调用都要创建函数的一个副本(函数变量的副本),这是很耗费存储器的。
软件工程视点
任何一个介意用递归方法来求解的问题,都可以用迭代方法求解。
递归更自然地反映了问题的本质,这样设计的程序直观明了,易于排错。