c++求整数n的阶乘
时间: 2023-11-24 20:49:34 浏览: 189
C++求整数n的阶乘有两种方法:循环和递归。
循环方法代码如下:
```c++
#include <iostream>
#include <string>
using namespace std;
int jiecheng(int a) {
int s=1;
while (a>1) {
s= s*a;
a-=1;
}
return s;
}
int main() {
cout<<"输入一个整数: "<<endl;
int a;
cin>>a;
int res=jiecheng(a);
cout<<"结果: "<<res<<endl;
return 0;
}
```
递归方法代码如下:
```c++
#include <iostream>
#include <string>
using namespace std;
int jiecheng(int a) {
int res;
if (a==1)
res=1;
while(a>1)
return a*jiecheng(a-1);
}
int main() {
cout<<"输入一个整数: "<<endl;
int a;
cin>>a;
int res=jiecheng(a);
cout<<"结果: "<<res<<endl;
return 0;
}
```
相关问题
c++中n的阶乘怎么求
可以使用循环来计算n的阶乘,具体代码如下:
```c
#include <stdio.h>
int main()
{
int n, i;
long long fact = 1;
printf("输入一个正整数: ");
scanf("%d", &n);
// 计算阶乘
for (i = 1; i <= n; ++i) {
fact *= i;
}
printf("%d 的阶乘 = %lld", n, fact);
return 0;
}
```
在循环中,从1开始乘到n,每次乘积累加到变量fact中。由于阶乘增长非常快,为了避免整数溢出,可以使用long long类型来存储结果。
c++递归算法求阶乘
C++递归算法求阶乘的实现如下:
```cpp
#include <iostream>
int factorial(int n) {
// 基线条件,当n为0或1时,直接返回1
if (n == 0 || n == 1) {
return 1;
}
// 递归调用,将问题规模缩小,求解n-1的阶乘
return n * factorial(n - 1);
}
int main() {
int n;
std::cout << "请输入一个非负整数:";
std::cin >> n;
std::cout << n << "的阶乘是:" << factorial(n) << std::endl;
return 0;
}
```
以上代码中,`factorial`函数使用递归的方式来求解阶乘。当输入的n为0或1时,直接返回1作为基线条件。否则,递归调用`factorial`函数来求解n-1的阶乘,并将结果与n相乘返回。