循环与递归的区别。
两者的相同点:
1.两者都可以完成循环遍历的功能。
2.两者都需要设置结束循环的条件。
3.两者每次循环或递归时,执行的程序体都是一样的。
4.两者在条件判断有误时,都可能会发生无法终止的情况(死循环和无限递归)。
两者的不同点:
- 递归时,每递归一层,就会在内存生成一个调用栈,来保存本次递归的信息。所以如果递归深度过深,有栈溢出的问题。循环则不会有这样的问题。
- 循环是一次正向的过程,递归需要回溯。
- 写法上的区别:递归是不断的调用自身的函数。循环则不需要。
- 一般来说递归的写法更简洁。
所有递归都可以改写为循环。
所有的循环都可以改写为递归?应该是不可以,解决子问题的循环是可以改写为递归的。有待验证。https://www.jianshu.com/p/3e3a9cdd4a6b