为什么我用递归写就RE(Runtime Error.
Received signal 11: Segmentation fault with invalid memory reference.)但是用while就全AC了?如果是递归溢出的话也应该是MLE。
RE源码(主要部分):
#define B long long
B dg(B d){
B s=0;
while (d>0){
s+=d%10;
d/=10;
}
if(s>9)s=dg(s);
else {
return s;
}
}
void ex(){
g*=7;
s+=dg(g);
}
AC源码(主要部分):
#define B long long
B dg(B d){
B s=0;
while (d>0){
s+=d%10;
d/=10;
}
return s;
}
void ex(){
g*=7;
while(g>9){
g=dg(g);
}
}
另外RE的那个g*=7;如果改为g*=5(5以下都一样)就只会WA而不是RE。有经验的大佬可以帮忙看一下问题出在哪里。