【发布时间】:2017-11-28 23:37:49
【问题描述】:
double factorial(int x) {
if (x >= 1)
return x * factorial(x - 1);
else
return 1;
}
当我尝试得到 1000000 的阶乘时,它会导致分段错误。请任何人都可以帮助我吗??
【问题讨论】:
-
鉴于您可以使用大量库来表示值,因此递归函数会导致堆栈溢出。
-
你知道这个数字有多大吗?提示:very, very large.
-
首先,不要使用递归。其次,您需要澄清要求是什么,因为您要求的数字无法以任何合理的形式表示......
-
如果你想支持这么大的数字,你需要一个大整数库。
-
通过计算阶乘的以 10 为底的对数进行循环,让您了解它有多大。
标签: c factorial abstract-data-type