用C++写一个阶乘的函数,要求输入0的结果等于1 
时间: 2023-04-06 08:03:53 浏览: 44
好的,以下是用C语言编写的阶乘函数,满足输入0的结果等于1:
```c
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
```
你可以将需要计算阶乘的数作为参数传递给这个函数,它将返回该数的阶乘。例如,调用 `factorial(5)` 将返回 120。
相关问题
用C++写一个阶乘函数,并打印6的阶乘
以下是用C语言编写的阶乘函数,并打印6的阶乘:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int num = 6;
int result = factorial(num);
printf("%d的阶乘是%d\n", num, result);
return 0;
}
```
输出结果为:
```
6的阶乘是720
```
用c++写折半查找求阶乘函数后K个零
这里给出一个用C++实现的求阶乘函数后K个零的折半查找算法。
```
#include <iostream>
using namespace std;
// 计算n的阶乘后有多少个0
int countZero(int n) {
int count = 0;
while (n > 0) {
count += n / 5;
n /= 5;
}
return count;
}
// 折半查找
int findK(int k) {
int left = 0, right = 5 * k;
while (left < right) {
int mid = (left + right) / 2;
if (countZero(mid) >= k) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
}
int main() {
int k = 5;
int res = findK(k);
cout << "阶乘后" << k << "个零的位置为:" << res << endl;
return 0;
}
```
这里的思路是先写一个计算n的阶乘后有多少个0的函数countZero,然后利用折半查找在0到5*k之间查找第一个满足countZero(mid)>=k的mid,最后返回mid即可。
相关推荐















