使用递归方法,求解×”。要求输入的n为整数,x不等于0。
时间: 2024-10-20 07:02:49 浏览: 20
Java求解两个非负整数最大公约数算法【循环法与递归法】
5星 · 资源好评率100%
在计算机科学中,我们可以使用递归算法来计算阶乘。阶乘是一个正整数n的所有小于及等于它的正整数的积,通常表示为n!。递归方法定义了一个函数,该函数通过自身调用来解决问题。对于阶乘的递归定义如下:
如果n是0或1,那么n的阶乘(记作`factorial(n)`)就是1。
如果n大于1,那么n的阶乘`factorial(n)`就是n乘以`(n-1)`的阶乘。
下面是一个简单的C语言函数实现:
```c
#include <stdio.h>
unsigned long long factorial(int n) {
if (n == 0 || n == 1) { // 递归基本情况
return 1;
} else {
return n * factorial(n - 1); // 递归调用
}
}
int main() {
int n;
printf("请输入一个非零整数: ");
scanf("%d", &n);
if (n < 0) {
printf("负数没有阶乘。\n");
} else {
unsigned long long result = factorial(n);
printf("n 的阶乘是: %llu\n", result);
}
return 0;
}
```
这个程序会询问用户输入一个整数,然后使用递归函数计算其阶乘。注意,为了防止整数溢出,这里使用了`unsigned long long`类型的变量来存储结果。
阅读全文