0

次のコードをコンパイルするために、cygwin gcc バージョン 4.5.3 を使用しています。

 /* recursion.c */
int factorial_aux(int n, int t) {
    if (n <= 1) {
        return t;
    } else {
        return factorial_aux(n-1, n*t);
    }
}

int factorial(int n) {
    factorial_aux(n, 1);
}

int main() {
    int result = factorial(4);
    printf("%d\n", result);
}

プログラム compile を次のように実行するとgcc recursion.c -o recursion.exe24 が出力されますが、次のようにコンパイルするとgcc -O2 recursion.c -o recursion.exe0 が出力されます。

誰かがなぜ異なる結果になるのか教えてもらえますか? それを修正する可能な方法はありますか?

ありがとう!

4

1 に答える 1

1

あなたのfactorial機能には何かが欠けています。それは何もしませんreturn

于 2012-08-08T05:24:01.800 に答える