2017-10-22 5 views
-3

n×n行列の等価要素の数を数えるこの再帰的な方法は機能しません。デバッグから同じ値を返し続け、カウントを停止し、iとjを1に保ちます。行列の対角線上の等しいアイテムを再帰的に実装する方法を修正するにはどうすればよいですか?

private static int checkSecDiag(int i,int j,int count,int col,char[][] board){ 
    if(i == col-1) 
     return count; 
    if(board[i][j] == board[i+1][j-1]) count ++; 
    i++; 
    j--; 
    checkSecDiag(i,j,count,col,board); 
    return count; 
} 
+0

* sigh * ...なぜ、人々はそれほど悪くはないことが知られているプログラミング言語で再帰を説明し続けるのですか? –

+0

@MarcusMüller大学でJavaを学ぶだけでは、理想はありませんでした:) –

+0

あなたはこれにどのようなパラメータを入力していますか? – Tezra

答えて

1

あなたのコードでは、再帰呼び出しの戻り値は無視されます。あなたは全くcountを渡し、次のように実装を変更しないでください

:この実装にトリックを

private static int checkSecDiag(int i, int j, int col, char[][] board){ 
    if(i == col-1) 
     return 0; 
    return checkSecDiag(i+1, j-1, col, board) 
     + ((board[i][j] == board[i+1][j-1])) ? 1 : 0); 
} 

は、最後の行にある:あなたはボードの場合は、1つを追加し、再帰的ステップが戻ってきたものは何でも返します隣のアイテムは同じです。

+0

@AdrianCostin編集をご覧ください。 – dasblinkenlight

関連する問題