我试图使用列表中的下列方法中的多个所有因素:为什么此Ruby代码不会返回预期的答案?
def find_factors(n)
factors = []
2.upto(n-1) {|x| factors << x if n % x == 0}
end
factor = find_factors(24)
puts factor
其打印出以下几点:
2
代替因素清单!如果做错了,该怎么办?
我试图使用列表中的下列方法中的多个所有因素:为什么此Ruby代码不会返回预期的答案?
def find_factors(n)
factors = []
2.upto(n-1) {|x| factors << x if n % x == 0}
end
factor = find_factors(24)
puts factor
其打印出以下几点:
2
代替因素清单!如果做错了,该怎么办?
upto
与块用于返回的接收装置,2
。
一种更好的方式来写,这将是:
def find_factors(n)
2.upto(n-1).select{|x| (n % x).zero?}
end
你必须在你find_factors
方法的最后返回factors
:
def find_factors(n)
factors = []
2.upto(n-1) {|x| factors << x if n % x == 0}
factors
end
呃! Facepalm :(对不起,浪费社区时间!!感谢您的快速响应! – TCSGrad
在Ruby中,只要您一个循环之前看到一个数组的初始化,通常可以将其转换为一个功能更强大的方法:
def find_factors(n)
2.upto(n-1).select{|x| n % x == 0}
end
这往往是更紧凑,往往更易读。
更好,更优雅/惯用,或更快? – TCSGrad
如同更多的防错 – sawa