我已經寫了一個簡單的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