我正在写一个简单的代码来计算大数字的阶乘。我没有发现任何超出范围的东西,但仍然存在分割错误。如果你看到什么,请告诉我。
class Solution {
public:
vector<int> factorial(int N){
vector<int> fact;
fact.push_back(1);
for(int i=2; i<=N; i++){
int carry=0;
int j;
for(j=0; j<fact.size(); j++){
int val = fact[j]*i + carry;
fact[j] = val%10;
carry = val/10;
}
if(carry!=0){
fact[j] = carry;
}
}
reverse(fact.begin(), fact.end());
}
您无法将结果push_back
保存到fact
,这意味着它将始终保持大小"1"。
此外,在第一个循环之后,j
的值将为1
(循环的最后一次迭代中的0
(,这导致在检查进位(循环外(时访问向量中的"不存在"索引。