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

标签 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

最佳答案

当您使用 def whatever(...) 定义一个方法时,您正在做两件事:创建一个方法,并将其分配给指定的方法槽。

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

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

也就是说:每次调用name时,它都会动态找到与name关联的代码。

关于ruby - 这个方法在ruby中如何使用自己的方法呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9406344/

相关文章:

java - 在字节码中使用 BCEL 将方法添加到类中的特定行

algorithm - 为什么这个简单的洗牌算法会产生有偏差的结果?

ruby - 在 ruby​​ 的字符串中使用方法返回

arrays - 基于ruby中的多个属性从对象数组中删除重复项

ruby - 为什么 Ruby base64 编码字符串与所有其他 base64 编码字符串不同?

math - 原点变化前后基于相机旋转/平移确定点位置

Java数表奇怪的错误

java - 如何将方法从不同的类传递到 Java 中的另一个类?

c - 如何在Ruby 中调用Ruby 内部的C 方法?

ruby-on-rails - graphql-ruby,日期或日期时间类型