简单写一个“打印从1到N的全部正整数”,尝试用递归把程序跑崩,N=1000尚可,N=10000就绷不住了,如下图。而用for循环实现N=1000000都能正常打印。
递归虽然写出的代码简洁,比循环更容易理解,但是有点为难机器了。递归是用栈机制实现的,每深入一层,都要占用一块栈数据区域,对于嵌套层数深的算法,对内存的空间要求很大;递归也需要大量调用函数,这也带来了大量额外的时间开销。
所以,对于深度大的算法,相比于递归,循环不管从哪方面而言,似乎都是更好的选择。
简单写一个“打印从1到N的全部正整数”,尝试用递归把程序跑崩,N=1000尚可,N=10000就绷不住了,如下图。而用for循环实现N=1000000都能正常打印。
递归虽然写出的代码简洁,比循环更容易理解,但是有点为难机器了。递归是用栈机制实现的,每深入一层,都要占用一块栈数据区域,对于嵌套层数深的算法,对内存的空间要求很大;递归也需要大量调用函数,这也带来了大量额外的时间开销。
所以,对于深度大的算法,相比于递归,循环不管从哪方面而言,似乎都是更好的选择。