用递归发求解整数的阶乘。
时间: 2024-12-31 17:01:41 浏览: 9
当然,你可以使用递归来计算整数的阶乘。阶乘(factorial)定义为一个正整数 n 的阶乘(记作 n!),等于所有小于及等于 n 的正整数的乘积。例如,5 的阶乘是 5 * 4 * 3 * 2 * 1。
这是一个简单的递归函数实现:
```c
#include <stdio.h>
// 定义阶乘函数
unsigned long long factorial(int n) {
// 基线条件:0 和 1 的阶乘为 1
if (n == 0 || n == 1) {
return 1;
}
// 递归条件:n 的阶乘等于 n 乘以前一个数的阶乘
else {
return n * factorial(n - 1);
}
}
int main() {
int number;
printf("Enter a non-negative integer to find its factorial: ");
scanf("%d", &number);
if (number < 0) {
printf("Error: Factorials are not defined for negative numbers.\n");
} else {
unsigned long long result = factorial(number);
printf("The factorial of %d is %llu\n", number, result);
}
return 0;
}
```
在这个函数里,如果 `n` 是 0 或 1,我们直接返回 1(因为这些数的阶乘都是 1)。否则,我们将 `n` 乘以 `(n-1)` 的阶乘,这就是递归调用。
阅读全文