次のアルゴリズムについて質問があります。
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) は発生しませんでした。何故ですか?スタックメモリの行数(関数呼び出し)が同じではありませんか?