C语言编写n!递归函数回归n!并调用n!计算m!/(m!-n!)n!
时间: 2024-02-06 11:04:09 浏览: 95
以下是用C语言编写的递归函数计算n!:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n, m;
printf("请输入n和m:");
scanf("%d %d", &n, &m);
int n_factorial = factorial(n);
int m_minus_n_factorial = factorial(m - n);
int m_factorial = factorial(m);
int result = m_factorial / (m_minus_n_factorial * n_factorial);
printf("%d! = %d\n", n, n_factorial);
printf("%d!/(%d!-%d!)%d! = %d\n", m, m, n, n, result);
return 0;
}
```
可以看到,我们先定义了一个`factorial`函数,它接收一个整数参数`n`并返回`n`的阶乘。在函数内部,如果`n`为0或1,直接返回1;否则递归计算`n-1`的阶乘并乘以`n`得到结果。
在主函数中,我们先从用户输入中读取`n`和`m`,然后分别调用`factorial`函数计算`n!`、`(m-n)!`和`m!`,最后根据题目要求计算并输出结果。
注意:由于阶乘的计算结果可能非常大,超出了int类型的表示范围,因此在实际开发中需要使用高精度计算库或其他方法进行处理。
阅读全文