我使用两种不同的方法解决了项目Euler的#6问题,但第二个恰巧巧合。我不明白为什么我不必为我的第一个方法返回new_sum的平方。有谁知道两者之间的主要区别是什么?Ruby中的Euler#6项目(有什么区别?)
def square_difference(num)
new_sum = 0
sum = 0
while num >= 1
sum += num**2 && new_sum += num
num -= 1
end
return new_sum**2 - sum
end
和
def square_difference(num)
new_sum = 0
sum = 0
while num >= 1
new_sum += num && sum += num**2
num -= 1
end
return new_sum - sum
end
我期待downvotes和投票结束是因为你没有告诉读者什么“项目欧拉#6”是什么。我建议你编辑并解释问题是什么。同时给出一个预期产出的简单数值例子也是有帮助的。一旦读者理解你要完成的是什么,分析你提出的两种方法应该相当简单。 –
你也可以计算如下:'num = 5; sum,sum_sq =(1..num).reduce([0,0]){| (sum,sum_sq),n | [sum + n,sum_sq + n * n]}; sum * sum - sum_sq#=> 170'。 –