-4

クラスを使用して再帰メソッドを作成しています。必要な出力がまったく得られません。

public Result foo( cell, Result R )
{
    grid = createGrid( cell )
    if (grid.empty )
        return;
    else
    {
        // find best 2 cell.
        best_cells[] = findBestCell( grid );

        // saves best R found so far.
        R = updateResult( R );

        // call foo( best_cells[] );
        for ( every cell in best_cells[] )
            return foo( best_cells[i], R );
    }
    return R;
}

if(grid.empty)このメソッドは、条件がtrue初めてのときにシロアリします。他の細胞には向かない!何故ですか?私はリターンを逃していますか?

更新 1: メモをくれた Thomas に感謝します。コードを次のように変更しました。

public Result foo( cell, Result R )
{
    grid = createGrid( cell )
    if (grid.empty )
        return R;
    else
    {
        // find best 2 cell.
        best_cells[] = findBestCell( grid );

        // saves best R found so far.
        R = updateResult( R );

        // call foo( best_cells[] );
        for ( every cell in best_cells[] )
        {
            Result temp_R = foo( best_cells[i], R );
            if( temp_R.error < R.error )
                R = temp_R;
            }

    }
    return R;
}

私はそれをテストしてから皆さんに返します。

更新 2: 以前のコードは問題なく動作します。最初の入力 R は == null であってはなりません。そうしないと、NPE が表示されます。

トーマス、どうもありがとう!コメントありがとうございます:)

4

1 に答える 1