分别使用递归与非递归两种方法编写函数int fact(int k)计算k 的阶乘,在主函数中调用fact,计算C64.(20分) Cnm=n!/(m!(n-m)!并接受上述代码
时间: 2023-12-29 13:01:56 浏览: 156
c代码-编写一个求阶乘的函数Fact(),然后在主函数中,计算并输出1到n之间所有数的阶乘值
5星 · 资源好评率100%
好的,我理解了你的问题。下面是递归与非递归两种方法实现计算阶乘的函数`fact(int k)`,以及主函数中调用`fact`计算C64的代码:
```c++
#include <iostream>
using namespace std;
// 递归方式计算阶乘
int fact_recursion(int k) {
if (k == 0) {
return 1;
} else {
return k * fact_recursion(k - 1);
}
}
// 非递归方式计算阶乘
int fact_non_recursion(int k) {
int result = 1;
while (k > 0) {
result *= k;
k--;
}
return result;
}
int main() {
int n = 64;
int m = 2;
int c = fact_non_recursion(n) / (fact_non_recursion(m) * fact_non_recursion(n - m));
cout << "C64 = " << c << endl;
return 0;
}
```
注意,这里我使用了非递归方式计算阶乘`fact_non_recursion`,因为在计算C64时需要多次调用阶乘函数,使用非递归方式能够更加高效。你可以根据需要选择使用递归或非递归方式实现阶乘函数。
阅读全文