#include<iostream> using namespace std; unsigned fac(unsigned n){ unsigned f; if(n==1) f=1; else f=fac(n-1)*n; return f; } int main(){ unsigned n; cin>>n; unsigned m=0; for(int i=0;i<=n;i++); m=fac(n); cout<<m<<endl; return 0; }
时间: 2023-11-30 15:04:11 浏览: 74
这段代码有两个问题:
1. 在 for 循环中没有写循环体,导致 m=fac(n) 这一语句只会被执行一次,即计算 n 的阶乘。
2. fac 函数没有考虑 n=0 的情况,应该在函数中增加一个 if 判断。
修改后的代码如下:
```
#include<iostream>
using namespace std;
unsigned fac(unsigned n){
unsigned f;
if(n==0)
f=1;
else if(n==1)
f=1;
else
f=fac(n-1)*n;
return f;
}
int main(){
unsigned n;
cin>>n;
unsigned m=0;
for(int i=0;i<=n;i++){
m=fac(i);
cout<<m<<endl;
}
return 0;
}
```
修改后的代码可以计算出从 0 到 n 的阶乘,并将结果输出。
相关问题
#include<iostream>using namespace std;unsigned fac(unsigned n){ unsigned f; if(n==0) f=1; else if(n==1) f=1; else f=fac(n-1)*n; return f;}int main(){ unsigned n; cin>>n; unsigned m=0; for(int i=0;i<=n;i++){ m=fac(i); cout<<m<<endl; } return 0;}解释每一行代码
这是一个计算阶乘的程序,下面是每一行代码的解释:
```c++
#include<iostream>
```
引入iostream头文件,以便使用输入输出流。
```c++
using namespace std;
```
使用std命名空间。
```c++
unsigned fac(unsigned n){
```
定义无符号整型函数fac,其参数为一个无符号整数n,返回值也是一个无符号整数。
```c++
unsigned f;
```
定义无符号整型变量f。
```c++
if(n==0)
f=1;
else if(n==1)
f=1;
else
f=fac(n-1)*n;
```
如果n为0或1,则f为1;否则,递归调用fac函数计算n-1的阶乘,并乘以n。
```c++
return f;
}
```
返回结果。
```c++
int main(){
```
定义主函数。
```c++
unsigned n;
cin>>n;
```
输入一个无符号整数n,表示需要计算n的阶乘以及比n小的所有整数的阶乘。
```c++
unsigned m=0;
```
定义无符号整型变量m,并将其初始化为0。
```c++
for(int i=0;i<=n;i++){
```
循环i从0到n。
```c++
m=fac(i);
cout<<m<<endl;
```
计算i的阶乘并输出结果。
```c++
}
return 0;
}
```
程序结束,返回0。
c++求1!+2!+3!+…+20!
以下是两种C++求1!+2!+3!+…+20!的例子:
1.使用double类型存储阶乘后的值和累加和
```c++
#include<iostream>
using namespace std;
int main(){
int n;
double fac=1,sum=0;//fac用来存放阶乘后的值,sum用于存放累加和
for(n=1;n<=20;n++){
fac*=n;
sum+=fac;
}
cout<<"1!+2!+3!+...+20!="<<sum<<endl;
return 0;
}
```
2.使用unsigned long long类型存储阶乘后的值和累加和
```c++
#include<iostream>
using namespace std;
int main(){
int n;
unsigned long long m=1,z=0;
for(n=1;n<=20;n++){
m*=n;
z+=m;
}
cout<<"1!+2!+3!+...+20!="<<z<<endl;
return 0;
}
```
阅读全文