2013-10-28 9 views
1

我目前正在做一些代码大战训练,并与第三个三角测试有麻烦。红宝石,返回第n个三角形数字,并返回0超出范围值

这里是问题:

您需要返回第n个三角形数字。您应该返回0超出范围值,但您将始终通过一个数字。

这是我当前的代码,当传递n只有值1,2和3(这是所有需要通过测试)。

# Return the nth triangular number 
def triangular(n) 
n * (n + 1)/2 
end 

我继续得到大多数通过了测试,但我得到一个错误:

Expected: 0; instead got: 10 

如果有人能亲切地解释这是什么,甚至问那将是巨大的,似乎无法在网上找到解释这个问题的任何材料。

+1

'n = 4'超出范围吗? – AGS

+0

如果[三角形数字]如[此处]所述(http://en.wikipedia.org/wiki/Triangular_number),则您的代码是正确的。我猜测'asserts'是为了检查所需的答案而编写的(即,对于'n' = 1,2和3),并且为'n'的其他值返回'0'以避免产生错误。 –

回答

1

您的公式似乎有效,因此必须与超出范围的数字相关。如果你得到“10而不是0”,那么也许输入数据有一个“-5”的情况,这将导致-5 * -4/2 = 10,但是当然对于“-5”应该没有回答。因此预期为零。