递归属于算法范畴吗

2019-09-30 13:17:01 +08:00
 unforgiven

如果说递归属于算法范畴,那么二叉树的遍历等如果使用递归的方式来解决仿佛都可以算在递归算法里面,这样一来貌似迭代也算是算法,因为递归可以实现的迭代都可以

5906 次点击
所在节点    算法
38 条回复
cabing
2019-09-30 13:32:53 +08:00
为啥不随呢?递归是算法的一种解法。

通常递归的效率的很低 ,有些场景下要求使用循环展开递归。
est
2019-09-30 13:34:48 +08:00
怎么不能算。算啊。
Melodyer
2019-09-30 13:36:29 +08:00
解决问题的办法
smdbh
2019-09-30 13:48:50 +08:00
不算吧,这个算是语言的特性。
for 和 while 的实现,能算两种算法?
misaka19000
2019-09-30 13:55:20 +08:00
我觉得不算
unforgiven
2019-09-30 14:11:26 +08:00
@cabing 你也说了递归是具体算法的一种解法,那么迭代是不是也算算法
unforgiven
2019-09-30 14:12:52 +08:00
@misaka19000 我也是这么觉得的,如果说递推算是算法我还能理解,递归只是实现方式而已,不知道他们为什么都喜欢说递归算法
unforgiven
2019-09-30 14:13:22 +08:00
@est 如果算的话,迭代算不算?
lvybupt
2019-09-30 15:33:39 +08:00
当然算。 不管是现在的计算机科学,还是数学,系统科学的定义,递归都是经典的算法之一。

迭代也算算法。 经典的辗转相除法就是一个典型的迭代算法。
lance6716
2019-09-30 15:52:55 +08:00
前几天刚看了个使用 y 组合子在非递归语言中实现递归
unforgiven
2019-09-30 15:58:50 +08:00
@lvybupt 你的话是不是可以描述为辗转相除法是一个是用迭代的算法,另外辗转相除法是不是还可以使用递归算法,那么辗转相除法到底是迭代算法还是递归算法?
unforgiven
2019-09-30 16:00:00 +08:00
@lvybupt 你的话是不是可以描述为辗转相除法是一个是用迭代的算法,另外辗转相除法是不是还可以使用递归来实现,那么辗转相除法到底是迭代算法还是递归算法?
Raymon111111
2019-09-30 16:04:45 +08:00
算啊

递归是一种算法思想
wqzjk393
2019-09-30 16:10:42 +08:00
本身不算是一个算法吧,只能说是一种实现方式或者说是技巧。
wqzjk393
2019-09-30 16:14:51 +08:00
和其他算法合起来可以叫 xx 的递归实现算法,但是单独拿出来说,感觉就更像是一种内置功能
passerbytiny
2019-09-30 16:27:01 +08:00
一、递归放在实现方式的语境中是实现方式,放到算法的语境中是算法。
二、递归是迭代,迭代包含递归。
三、算法分类,以及绝大部分事物的分类,都不可能是一个“A、B、C、……”的列表就能分好的。
四、能不能算出结果是算法的必要条件,但算法首先要考虑的是时间、空间两个复杂度。
lvybupt
2019-09-30 16:28:45 +08:00
@unforgiven 辗转相除法就是一个具体的算法,你用递归实现相同的求同余功能那不叫辗转相除法了。
其实你自己陷入了一个逻辑的怪圈。
我举个例子类比,白羽鸡是鸟,乌鸡是鸟,那么鸡是不是鸟呢?
你认为一个具体的计算过程叫算法,某一类具有共性的计算过程的统称就不叫算法了。
unforgiven
2019-09-30 16:37:10 +08:00
@lvybupt 用递归实现相同的求同余功能为什么不叫辗转相除法了,难不成我用迭代实现的前序遍历也不是前序遍历了?我的想法是说 xx 算法的递归实现更严谨一些,不至于上来就是一个递归算法了事
unforgiven
2019-09-30 16:38:17 +08:00
@wqzjk393 但是 n 多人把叫不出名字的递归实现的算法统统叫做递归算法,类似于汉诺塔问题
sunjourney
2019-09-30 16:39:29 +08:00
if else 也是算法啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/605651

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX