首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是递归?它是如何工作的?

什么是递归?它是如何工作的?
EN

Stack Overflow用户
提问于 2011-06-21 05:53:59
回答 2查看 45.1K关注 0票数 20

有人能解释一下递归到底是什么吗(以及它在Ruby中是如何工作的,如果这不是要求太高的话)。我遇到了一个依赖于递归的冗长的代码片段,它把我搞糊涂了(我现在把它弄丢了,而且它并不完全相关)。

EN

回答 2

Stack Overflow用户

发布于 2011-06-21 05:58:50

要理解递归,首先需要理解递归。

现在,在严肃的注释中,递归函数是调用自身的函数。这种构造的一个典型例子是斐波那契序列:

代码语言:javascript
复制
def fib(n)
  return n if (0..1).include? n
  fib(n-1) + fib(n-2) if n > 1
end

使用递归函数会给你带来强大的功能,但也会带来很大的响应性(双关语),而且会带来一些风险。例如,如果你的递归性太大,你可能会导致堆栈溢出(我很幸运) :-)

票数 35
EN

Stack Overflow用户

发布于 2011-06-21 11:13:45

通常情况下,递归是关于方法调用自身的,但也许你遇到的是递归结构,即引用自身的对象。Ruby 1.9很好地处理了这些问题:

代码语言:javascript
复制
h = {foo: 42, bar: 666}
parent = {child: {foo: 42, bar: 666}}
h[:parent] = parent
h.inspect # => {:foo=>42, :bar=>666, :parent=>{:child=>{...}}}

x = []
y = [x]
x << y
x.inspect # => [[[...]]]
x == [x]  # => true

我发现最后一行非常糟糕;几年前,我通过比较递归结构,对这类问题进行了blogged

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6418017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档