我試圖解決以下問題:生成的特殊矩陣「
給定一個數n,產生大小爲2的矩陣^ N * 2^n的尊重以下規則:
n = 1
[ 1 2 ]
[ 3 4 ]
n = 2
[ 1 2 5 6 ]
[ 3 4 7 8 ]
[ 9 10 13 14 ]
[ 11 12 15 16 ]
這裏是我的算法:
static void generare(int i , int j , int x , int y){
if(x - i == 1 && y - j == 1)
{
mat[i][j] = counter++;
mat[i][j+1] = counter++;
mat[i+1][j] = counter++;
mat[i+1][j+1] = counter++;
}
else{
generare(i,j,x/2,y/2);
generare(i,y/2+1,x/2,y);
generare(x/2+1,j,x,y/2);
generare(x/2+1,y/2+1,x,y);
}
}
它的工作原理對於n = 1,2,但是當我嘗試任何數量> 2,它崩潰。我怎樣才能修復我的遞歸函數?
1.什麼是「墊子」? 2.它與什麼錯誤/異常崩潰? – UnholySheep
mat是我矩陣的名字。我得到的錯誤是「java.lang.StackOverflowError」。我的遞歸函數在一個無限循環中結束,但我不知道應該添加什麼條件,所以我的函數仍然會按照我希望的方式執行。 – ivanciprian
「mat」是如何定義的?同樣在這些計算中檢查相等性通常是一個壞主意,相反,您應該(可能)使用'<='。你的代碼也不包含一個'n'變量,那麼你怎麼調用它呢? (我假設你爲每個參數傳遞相同的數字?) – UnholySheep