1
AoEiuV020CN 2022-08-08 18:01:16 +08:00
“过早优化是万恶之源”
|
2
AoEiuV020CN 2022-08-08 18:05:28 +08:00
@AoEiuV020CN #1 当业务逻辑是递归时就应该写成递归,而不是循环,
如果在算法完成不再需要修改之后确认这里需要死扣那一点点性能,再考虑改成不影响算法的循环也不迟, |
3
yedanten 2022-08-08 18:18:23 +08:00 via Android
“累死”程序员和“累死”机器的区别。有些解法递归好理解好写而已。如果可以的话,尽可能用循环
|
4
wxf666 2022-08-08 18:55:37 +08:00
你不用语言的栈来实现递归,那就用自己的栈来实现循环呗(除非可优化的尾递归)
|
5
billlee 2022-08-08 19:54:10 +08:00 via Android
很多算法用递归更容易理解,gcc 开 -O2 就有尾递归优化,不能尾递归的改成手动管理栈,复杂度和直接写递归也是一样的,只有常数因子的差别
|
6
huzhikuizainali OP @wxf666 我现在看到递归的例子都是“重复”做某件事情。但是递归代码必然会引起内存入栈。难道利用循环“重复”做某件事情也会有内存进栈?
|
7
wxf666 2022-08-08 23:01:21 +08:00
@huzhikuizainali 单纯的循环不会进栈
或许,你可以试着,用循环去解决一些,原本用递归干的活儿 比如,写个走迷宫。 再如,用递归下降去解析个 json 可能写多几个,你就不爱用循环+自己维护的栈,去模拟语言实现好的递归了 |
8
wxf666 2022-08-08 23:04:39 +08:00
@huzhikuizainali 走迷宫用深度优先遍历啊
|
9
wxf666 2022-08-08 23:27:55 +08:00
|
10
huzhikuizainali OP @wxf666 对。就是不明白这一点。
|