好吧,所以這是我的問題here的附錄,已回答。2-D遞歸總是返回0
我不想辜負上一個問題的答案,我認爲這應該有公平的自己的問題,JB Nizet回答我的第一個問題,並獲得這樣的信譽。
我正在實現一個類的二維數據結構。使用的方法是一個「NxN」對象數組。
所以,
Cell[][] dataStructure = new Cell[N][N];
每個單元依賴於電池的輸出到它的左側,和它上面的細胞,創建自己的輸出。 2-d的結構將用於一系列輸入進行測試,000到111
2- d結構的實施例,輸出如何流入下細胞
示例:
假設標準的X,Y方向,我嘗試使用以下的方法來獲得右下方電池的輸出:
/**
* Recursive method that returns the output of a given cell
* @param row: the row the cell is in (its yPos)
* @param inputs:
* @param column: the column the cell is in (its xPos)
*/
private int[] getOutput(int[] inputs,int yPos, int xPos){
if (yPos==-1){
int[] out = new int[2];
out[0] = 0; // yPos
out[1] = inputs[xPos]; //xPos
return out;
}
else if (xPos==-1){
int[] out = new int[2];
out[0] = inputs[yPos]; //yPos
out[1] = 0; //xPos
return out;
}
int[] leftOutput = getOutput(inputs, yPos, xPos-1);
int[] topOutput = getOutput(inputs, yPos-1, xPos);
return currentStructure[yPos][xPos].getResult(leftOutput[1], topOutput[0]);
}
爲了簡化事情,我現在有一個getResult方法,對於2-d結構中的單元格,在指定的輸入上執行邏輯。結果是兩個輸出的int [],每個方向一個。
該方法的getResult,因爲它目前爲被寫成這樣:
public int[] getResult(int left, int top)
{
int[] resultOut = new int[2];
if (xDirStr.equals("00")){ // AND
resultOut[0]= left * top;
}
if (xDirStr.equals("01")){ // OR
if (left ==1 || top ==1)
resultOut[0]= 1;
else
resultOut[0] =0;;
}
if (xDirStr.equals("10")){ // NOT, USES ONLY NOT X
if (left ==0)
resultOut[0]= 1;
else
resultOut[0]= 0;
}
if (xDirStr.equals("11")){ // XOR
if ((left==1 && top==0) || (left==0 && top==1))
resultOut[0]= 1;
else
resultOut[0]= 0;
}
if (yDirStr.equals("00")){ // AND
resultOut[1]= left * top;
}
if (yDirStr.equals("01")){ // OR
if (left ==1 || top ==1)
resultOut[1]= 1;
else
resultOut[1]= 0;
}
if (yDirStr.equals("10")) { // NOT, USES ONLY NOT X
if (left ==0)
resultOut[1]= 1;
else
resultOut[1]= 0;
}
if (yDirStr.equals("11")) { // XOR
if ((left==1 && top==0) || (left==0 && top==1))
resultOut[1]= 1;
else
resultOut[1]= 0;
}
return resultOut;
}
我已經調試一步一步的,但不能趕上我的問題。輸出不匹配我手動重新驗證它,輸出始終是0.任何有用的提示將不勝感激!
我的具體問題是爲什麼getOutput總是返回0?從我看到的調試中,這個問題不在我的邏輯應用程序中,我沒有在這裏列出。
再次感謝。
=======更新======== 樣品3x3,應BevynQ的要求。
沿着左邊和上邊沿的輸入在每次測試期間都會改變,這個例子是針對基本情況000. **非函數總是返回從左邊進入的值的邏輯非* *「輸出」我試圖檢查我的方法是用紅色圈出來的。
你能否給一個填充網格作爲例子? – BevynQ
你想讓我隱藏一下邏輯,還是簡單地表示應用於每個輸出的邏輯? – Ramrod
@BevynQ我更新了原來的帖子,以包括一個3x3矩陣的工作示例。 – Ramrod