0

次のアルゴリズムについて質問があります。

public static int sum(int x){
    if (x == 0 || x==1)
    {
        return x;
    }
    else 
        return x + sum(x-1);

}

public static double factorial(int x)
{
    if (x==0 || x==1)
    {
        return 1;
    }
    else 
    {
        return (double)(x*factorial(x-1));
    }
}

sum (10,000) と factorial(10,000) を実行しましたが、factorial(10,000) を実行するとスタック オーバーフロー エラーが発生しましたが、sum(10,000) は発生しませんでした。何故ですか?スタックメモリの行数(関数呼び出し)が同じではありませんか?

4

2 に答える 2