为什么此代码中存在分段错误



我正在写一个简单的代码来计算大数字的阶乘。我没有发现任何超出范围的东西,但仍然存在分割错误。如果你看到什么,请告诉我。

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(,这导致在检查进位(循环外(时访问向量中的"不存在"索引。

最新更新