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)
在定义方法时,def whatever(...)
您正在做两件事:创建方法,并将其分配给命名方法槽.
当你在Ruby中调用一个方法时,它将在本地范围内查找; 在fib
包含fib
定义的当前对象的方法内部.因此,它找到了当前的定义fib
并调用它.
我提到了当前部分,因为如果fib
方法fib
在其自身内部的当前对象上重新定义,则将使用新定义,而不是旧定义.
也就是说:每次调用名称时,它都会动态地找到与名称相关的代码.