阶乘和的运算用代码编写

img

img


我写的代码在上面,题目在下面,我不知道为什么我的代码哪里不符合题目,但就是输出不了

你的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;
    
}


逻辑有问题,会一直无限递归下去