这个方法如何在ruby中使用自己的方法?

eri*_*aio 2 ruby math methods recursion fibonacci

我看到了关于斐波那契序列的这个例子然后在IRB中进行了测试.希望有人可以为我分解,并告诉我它是如何在正在定义的方法中使用相同的方法.

def fib(n)
 return n if (0..1).include? n
 fib(n-1) + fib(n-2) if n > 1
end
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 6

在定义方法时,def whatever(...)您正在做两件事:创建方法,并将其分配给命名方法槽.

当你在Ruby中调用一个方法时,它将在本地范围内查找; 在fib包含fib定义的当前对象的方法内部.因此,它找到了当前的定义fib并调用它.

我提到了当前部分,因为如果fib方法fib在其自身内部的当前对象上重新定义,则将使用新定义,而不是旧定义.

也就是说:每次调用名称时,它都会动态地找到与名称相关的代码.