按下列要求分别写出两个函数。 (1) 计算n!,计算公式为n!=1×2×3×……×n,函数原型为double fac(int n); (2) 调用上述函数计算 ,计算公式如下,函数原型为double cmk(int m, int k);在主函数中调用这两个函数计算 的结果。
时间: 2024-12-18 08:33:44 浏览: 10
python计算阶乘和的方法(1!+2!+3!+…+n!)
以下是两个函数的实现:
```cpp
#include <iostream>
// 函数fac用于计算阶乘
double fac(int n) {
if (n == 0 || n == 1) { // 特殊情况处理0和1的阶乘
return 1;
} else {
double result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
}
// 函数cmk用于计算组合数 C(m, k)
double cmk(int m, int k) {
if (k > m || k < 0 || m < 0) { // 防止无效的输入
return -1; // 返回错误代码或抛出异常
} else {
return static_cast<double>(fac(m)) / (fac(k) * fac(m - k));
}
}
int main() {
int m, k;
std::cout << "请输入m和k的值:";
std::cin >> m >> k;
double fact_m = fac(m);
double result_cmk = cmk(m, k);
if (result_cmk != -1) {
std::cout << "C(" << m << ", " << k << ") = " << result_cmk << std::endl;
} else {
std::cout << "无效的组合数计算!" << std::endl;
}
return 0;
}
```
在这个程序中,`fac`函数用于计算阶乘,而`cmk`函数则利用阶乘公式计算组合数。在主函数中,用户可以输入`m`和`k`的值,然后调用这两个函数并输出结果。如果`cmk`函数检测到无效的输入,则返回-1表示错误。
阅读全文