有人能解释一下递归到底是什么吗(以及它在Ruby中是如何工作的,如果这不是要求太高的话)。我遇到了一个依赖于递归的冗长的代码片段,它把我搞糊涂了(我现在把它弄丢了,而且它并不完全相关)。
发布于 2011-06-21 05:58:50
要理解递归,首先需要理解递归。
现在,在严肃的注释中,递归函数是调用自身的函数。这种构造的一个典型例子是斐波那契序列:
def fib(n)
return n if (0..1).include? n
fib(n-1) + fib(n-2) if n > 1
end
使用递归函数会给你带来强大的功能,但也会带来很大的响应性(双关语),而且会带来一些风险。例如,如果你的递归性太大,你可能会导致堆栈溢出(我很幸运) :-)
发布于 2011-06-21 11:13:45
通常情况下,递归是关于方法调用自身的,但也许你遇到的是递归结构,即引用自身的对象。Ruby 1.9很好地处理了这些问题:
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。
https://stackoverflow.com/questions/6418017
复制相似问题