这是更一般的递归或迭代?

时间:2015-10-19 20:14:09

标签: recursion iteration

是递归比迭代更通用吗?

对我来说,迭代意味着使用除子程序调用之外的语言结构进行重复控制(比如循环结构和/或显式) goto's),而递归意味着使用子程序调用获得重复控制)。这两个更普遍吗?

2 个答案:

答案 0 :(得分:2)

投票结束可能会促使基于意见的回应;我基于意见的回答是:递归更普遍,因为:

  1. 它只是一个函数调用的用户案例,一种语言已经拥有;和
  2. 递归捕获直接的一对一重复模式和更复杂的模式,例如树遍历,分而治之等等。
  3. 相反,迭代往往是一个特定的语言级构造,只允许直接线性遍历。

答案 1 :(得分:1)

就基于意见而言,最合理的答案是递归和迭代都不比另一种更通用。一个语言可以是图灵完成递归但没有迭代(最小的Lisps就是这样),一个语言也可以是图灵完成迭代但没有递归(早期版本的Fortran不支持递归)。递归和迭代都被广泛使用。迭代可能更常用,因为对于每个学习使用像Lisp或Haskell这样的程序编程的人来说,可能有十几个人用Java或Visual Basic学习编程 - 但我不认为“最常用的”是“general”的好同义词。