写一个能计算阶乘的c++代码
时间: 2023-05-19 13:06:02 浏览: 122
以下是能计算阶乘的C代码:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("%d的阶乘是%d\n", n, factorial(n));
return 0;
}
```
该代码使用递归的方式计算阶乘,如果输入的是0,则返回1。否则,返回n乘以n-1的阶乘。
相关问题
写一个用栈实现递归计算阶乘的c++代码
好的,下面是用栈实现递归计算阶乘的c++代码:
```c++
#include <iostream>
#include <stack>
using namespace std;
int factorial(int n) {
stack<int> s;
s.push(n);
int result = 1;
while (!s.empty()) {
int x = s.top();
s.pop();
result *= x;
if (x > 1) {
s.push(x - 1);
}
}
return result;
}
int main() {
int n;
cout << "请输入一个整数:";
cin >> n;
cout << n << "的阶乘是:" << factorial(n) << endl;
return 0;
}
```
希望对您有帮助!
c++计算阶乘的代码
在 C++ 中,你可以使用递归或者循环来计算阶乘。这里分别给出两个简单的例子:
**递归方法**:
```cpp
#include <iostream>
// 使用递归函数计算阶乘
unsigned long long factorial(int n) {
if (n == 0 || n == 1) // 阶乘的基本情况:0和1的阶乘都是1
return 1;
else
return n * factorial(n - 1); // 递归调用自身
}
int main() {
int num;
std::cout << "请输入一个非负整数:";
std::cin >> num;
try {
std::cout << "该数的阶乘是:" << factorial(num) << std::endl;
} catch (std::overflow_error& e) {
std::cout << "阶乘结果过大,无法表示为 unsigned long long!" << std::endl;
}
return 0;
}
```
**循环方法**:
```cpp
#include <iostream>
// 使用循环计算阶乘
unsigned long long factorial(int n) {
unsigned long long result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
int main() {
int num;
std::cout << "请输入一个非负整数:";
std::cin >> num;
std::cout << "该数的阶乘是:" << factorial(num) << std endl;
return 0;
}
```
阅读全文