如何将对象作为参数传递给其在Ruby中的方法

问题描述:

我试图为Fixnum类定义factorial方法,我不知道如何将这个Fixnum作为参数传递给我的方法。 正试图写这样的东西如何将对象作为参数传递给其在Ruby中的方法

def Fixnum.factorial(n) 
    n > 1 ? n * factorial(n-1) : 1 
end 

虽然我知道这将是不正确的。那么有没有某种“这个”保留字来访问这个数字?

事情是这样的:

class Fixnum 
    def factorial 
     self > 1 ? self * (self - 1).factorial : 1 
    end 
end 

puts 6.factorial 
# 720 

你知道,当然,这是计算阶乘的一个愚蠢的方法?

+0

傻?怎么会这样? (如果'*'是一个'+',那么我就知道这很愚蠢)。 – steenslag 2012-03-13 09:13:20

+0

你不需要递归。简单的循环将会很好。 – 2012-03-13 09:14:58

+2

好吧,数学上正确,但计算上“愚蠢”(=非常低效)。用TCO语言使用的尾部呼叫析因可以。在Ruby中,我可能会写'(2..n).inject(1,:*)'。 – tokland 2012-03-13 09:17:39