我已经写了一个简单的GCD函数来实现欧几里德的算法来计算最大公约数gcd(m,n),这是最大的整数k除以m和n。如何纠正我的单元测试的GCD功能
,我写的函数编译成功:
public static int gcd(int m, int n) {
if (n == 0) return m;
return gcd(n, m%n);
}
不过,我碰到一个错误,当我写GCD单元测试:
@Test public void gcdTest() {
for (int m = 0; m < 15; m++) {
for (int n = 0; n < 15; n++) {
assertEquals("Divide m,n", m/n%m, Recursion.gcd(m,n));
}
}
}
的错误出现在“的assertEquals”线。我不确定是否可能通过写m/n%m来错误地计算这种方法。
任何提示或建议?提前致谢。
由于在两个for-loops中都以0开头,所以您有类似0/0%0的情况。 –
@StefanFreitag甚至没有想过!现在我从两个for循环开始。然而,我得到一个错误,说除以m,n预计为0,但为1. –
@Dday提示:不打印“m,n”...打印m和n的实际值。该消息应该帮助**识别那些不起作用的值!然后看到我的答案;-) – GhostCat