阶乘的累加,请问这串代码哪里有问题(关键词-for)

 #include<stdio.h>
int X(int x){
    for(int i=1;i<x;i++)
        x*=i;
return x;
}
int main(){
    int N,S=0;
    scanf("%d",&N);
    for(int j=1;j<=N;j++)
        S+=X(j);
    printf("%d",S);
return 0;
}
    x*=i;在这里不可以在用x了,建议换一个参数,不然for循环里面x的就会改变,无限循环

具体问题出在哪里,方便说说吗

X函数里面的for循环应该是i≤x

#include<stdio.h>
int main(){
int N,Sum=0,j,i;
scanf("%d",&N);
for(j=1;j<=N;j++)
{ int a=1;
for(i=1;i<=j;i++)
{
a*=i;
}
Sum+=a;
}
printf("%d",Sum);
return 0;
}
我自己写了一个