1~20的阶乘,为啥是错的我写的,看不出来错误

#include
int main()
{int n=0;
double sum=1,he=0;//he是指 和
if(n<=20)
{sum=sum*(n+1);
he=he+sum;
n=n+1;}
printf("总和为%lf\n",he);
return 0;
}

把if换成while就好了...

把if换为while,if为选择结构,while才能实现循环,且把20前的=去掉,否则会把21也算上