C语言编写 用递归法实现函数long fact(int n),该函数返回n的阶乘,然后编程调用该函数计算下式的值,其中m和n的值要求从键盘输入:n!/m!(n-m)!
时间: 2024-09-21 16:09:53 浏览: 57
在C语言中,你可以使用递归函数`long fact(int n)`来计算阶乘。递归是函数自身在其定义域内直接或间接地调用自身的过程。对于阶乘,递归的定义是:0的阶乘是1,非零整数n的阶乘是n乘以(n-1)的阶乘。下面是递归函数实现的例子:
```c
#include <stdio.h>
// 递归函数,计算阶乘
long long factorial(int n) {
if (n == 0 || n == 1) { // 递归的基本情况
return 1;
} else {
return n * factorial(n - 1); // 递归调用
}
}
int main() {
int m, n; // 输入变量
printf("请输入n和m的值:");
scanf("%d %d", &n, &m);
// 计算阶乘并确保m小于n,防止除以零的情况
if (m > n) {
printf("错误:m不能大于n。\n");
} else {
long long numerator = factorial(n);
long long denominator = factorial(m) * factorial(n - m);
// 计算分数值
long long result = numerator / denominator;
printf("%.0f = %.0f / (%.0f * %.0f)\n", result, numerator, denominator/m, n - m);
}
return 0;
}
```
在这个程序中,用户会先输入两个整数n和m,然后计算n! / m!(n-m)! 的值。请注意,由于C语言标准库中没有提供长整型除法操作符`/`,这里使用了`long long`数据类型来避免溢出。同时,在计算之前检查了m是否小于等于n。
阅读全文