3

これは単純な再帰回文テストであり、それ自体で機能しますが、関数が実際に何を返すかに関係なく 0 を返します。これが私のコードです。デバッグ cout ステートメントを残したので、実際に機能することがわかります。

bool pal(int l, int r, char *a)
{
     if(l >= r)
     {
        cout << "returning true" << endl;
        return true;
     }

     if(a[l] != a[r])
     {
        cout << "returning false" << endl;
        return false;
     }
     pal(l+1, r-1, a);
}
4

3 に答える 3

8

まったく返されないパスがあるため、プログラムの動作は未定義です。return最後にステートメントを追加する必要があります。

return pal(l+1, r-1, a);
于 2012-11-14T23:02:17.707 に答える
4
pal(l+1, r-1, a);

を呼び出しますpalが、結果を破棄します。また、パスが値を返さない状況も発生します(警告を確認してください)。あなたが欲しいものは:

return pal(l+1, r-1, a);
于 2012-11-14T23:02:27.570 に答える
0

最後に return ステートメントが必要です。関数がif文に入らないと戻り値がないからです。

それは次のようなものになる可能性があります

return pal(l+1, r-1, a);
于 2012-11-14T23:35:08.400 に答える