我使用以下方法尝试列出数字的所有因子:
def find_factors(n)
factors = []
2.upto(n-1) {|x| factors << x if n % x == 0}
end
factor = find_factors(24)
puts factor
打印出以下内容:
2
而不是因素列表!如果做错了怎么办?
答案 0 :(得分:5)
upto
将返回接收者,即2
。
更好的方法是:
def find_factors(n)
2.upto(n-1).select{|x| (n % x).zero?}
end
答案 1 :(得分:2)
在ruby中,无论何时在循环之前看到数组初始化,通常都可以将其转换为更具功能性的方法:
def find_factors(n)
2.upto(n-1).select{|x| n % x == 0}
end
这往往更紧凑,而且往往更具可读性。
答案 2 :(得分:1)
您必须在factors
方法结束时返回find_factors
:
def find_factors(n)
factors = []
2.upto(n-1) {|x| factors << x if n % x == 0}
factors
end