你的fac方法里if成立之后就该return了吧,不然输入什么都会走到下面的方法。
#include<iostream>
using namespace std;
int fac(int n){
if(n==1) return 1;
else {
int mul=1;
for(int i = 1; i<=n; i++){
mul = mul*i;
}
return mul + fac(n-1);
}
}
int main(){
int m=0;
while(m<=0){
cin>>m;
if(m<=0) cout<<"请输入大于0的数字"<<endl;
}
cout<<m<<" 以内阶乘的合为: "<<fac(m)<<endl;
return 0;
}
#include<iostream>
using namespace std;
double fact( int n );
int main(void)
{
int i, n;
double sum;
cin >> n;
sum = 0;
for(i = 1; i <= n; i++){
sum = sum + fact(i);
}
cout << "n=" << n << endl;
cout << "sum=" << sum << endl;
return 0;
}
double fact( int n ){
double j,s=1;
for(j=1;j<=n;j++)
s=j*s;
return s;
}
逻辑有问题,会一直无限递归下去