C++ 阶乘求和找错

来源:百度知道 编辑:UC知道 时间:2024/05/10 11:47:39
#include<iostream>
using namespace std;
void main()
{
int fac(int);
int n,s;
for(n=1;n<=20;n++)
{
s+=fac(n);
}
cout<<s;
}
int fac(int n)
{
if(n=1)return 1;
else return n*fac(n-1);
} 这个哪里错了啊 输出的数不对啊

阶乘算法有问题。
int 类型最大整数 65536.
20!=2432902008176640000
都多大了。远远超出其表示范围。

20!是个多大的数,你用笔算算~~能用int算?明显超过了int的范围!
肯定是错!!
至于你的程序逻辑是
这里错了
if(n=1)return 1;
应该是
if(n==1)return 1;

20太大,溢出。

#include<iostream>
using namespace std;
void main()
{
int fac(int);

int n,s=0;

for(n=1;n<=20;n++)
{
s+=fac(n);
}

cout<<s<<endl;
}

int fac(int n)
{
if(n==1)
return 1;
else
return n*fac(n-1);
}

fac()函数中:

if(n=1)return 1;
改为
if(n==1)return 1;

这个应该可以。

#include<stdio.h>

int mul(int arr[],int n,int len)
{
int i,c=0;
for (i=0; i<len; i++)
{
arr[i]=arr[i]*n+c;
c=arr[i]/10;
arr[i]%=10;
}
while (c!=0)
{
arr[i++]=c%10;
c/=10