c语言,编写一个递归函数,求n!
时间: 2024-12-10 18:33:33 浏览: 27
在C语言中,你可以使用递归函数来计算阶乘(n!)。阶乘是指从1乘到n的所有正整数的积。下面是一个简单的递归函数示例:
```c
#include <stdio.h>
// 递归函数计算阶乘
unsigned long long factorial(int n) {
if (n == 0 || n == 1) { // 基础情况:0! = 1 和 1! = 1
return 1;
} else {
// 递归情况:n! = n * (n - 1)!
return n * factorial(n - 1);
}
}
int main() {
int num;
printf("请输入一个非负整数: ");
scanf("%d", &num);
// 检查输入是否合法
if (num < 0) {
printf("错误: 阶乘只对非负整数有意义.\n");
} else {
unsigned long long result = factorial(num);
printf(" %d 的阶乘是: %llu\n", num, result);
}
return 0;
}
```
在这个程序中,用户输入一个整数`num`,然后调用`factorial`函数来计算它的阶乘。如果`n`是0或1,则返回1;否则,递归地调用自身并更新结果。
相关问题
C语言编写n!递归函数回归n!并调用n!计算m!/(m!-n!)n!
以下是用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类型的表示范围,因此在实际开发中需要使用高精度计算库或其他方法进行处理。
c语言,编写递归函数求n!在主函数中调用该函数,求5!+8!的值
好的,这里是 C 语言的递归函数求 n! 的代码:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int result = factorial(5) + factorial(8);
printf("%d\n", result);
return 0;
}
```
这个程序中的 `factorial` 函数是递归实现的,它接收一个整数参数 `n`,并返回 `n` 的阶乘。在 `factorial` 函数中,如果 `n` 的值为 1,那么就返回 1,否则就返回 `n` 乘上 `factorial(n - 1)` 的结果,这里用到了函数的递归调用。
在主函数中,我们分别调用 `factorial(5)` 和 `factorial(8)`,并将它们的返回值相加,最后将结果打印出来。运行这个程序,输出结果为 40321。
阅读全文