【发布时间】:2013-10-08 06:29:20
【问题描述】:
我对以下算法有疑问,
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) 时出现堆栈溢出错误。这是为什么?栈内存的行数(函数调用)不一样吗?
【问题讨论】:
-
可能是因为 10,000!比宇宙中的原子数大几个数量级。
-
@musical_coder:没关系。
-
@musical_coder 没关系,这个数字会绕回来。
标签: recursion