用c语言编写fact(n)
时间: 2024-12-12 16:21:43 AIGC 浏览: 54
在 C 语言中,编写一个计算阶乘 (factorial) 的函数 `fact(n)` 可以通过递归或循环的方式实现。这里是一个简单的递归版本:
```c
#include <stdio.h>
// 定义 fact 函数,计算 n 的阶乘
unsigned long long fact(int n) {
// 阶乘的基本情况:0 和 1 的阶乘都是 1
if (n == 0 || n == 1)
return 1;
// 递归计算 n 的阶乘
else
return n * fact(n - 1);
}
int main() {
int num;
printf("请输入一个非负整数:");
scanf("%d", &num);
// 检查输入是否合法
if (num < 0) {
printf("错误:输入的数字必须是非负整数。\n");
} else {
unsigned long long result = fact(num);
printf("输入的 %d 的阶乘是:%llu\n", num, result);
}
return 0;
}
```
在这个程序中,`fact(n)` 会不断调用自身直到达到基本情况,然后逐层返回结果。如果输入非常大,可能会导致溢出,所以最好使用能处理大数的类型(如 `unsigned long long`),或使用循环来代替递归。
相关问题
用C语言编写fact函数以及调用
在C语言中,我们可以编写一个名为`factorial`的函数来计算一个正整数的阶乘。阶乘是指从1乘到给定数的所有整数的积。下面是一个简单的函数定义和调用示例:
```c
#include <stdio.h>
// 定义阶乘函数
unsigned long long factorial(int n) {
if (n == 0 || n == 1) { // 阶乘的基本情况:0! = 1 和 1! = 1
return 1;
} else {
return n * factorial(n - 1); // 递归调用
}
}
int main() {
int num;
printf("请输入一个非负整数: ");
scanf("%d", &num);
if (num >= 0) {
unsigned long long result = factorial(num);
printf("The factorial of %d is %llu.\n", num, result);
} else {
printf("输入错误: 只能输入非负整数.\n");
}
return 0;
}
```
在这个程序中,我们首先检查输入的数是否是非负的,然后调用`factorial`函数计算阶乘,并将结果打印出来。如果输入的是负数,则会给出错误提示。
用c语言编写计算n!的程序,n从键盘输入,用for 循环和while 循环分别实现
在C语言中,我们可以使用循环结构如for和while来编写计算阶乘(n!)的程序。这里提供两个版本的示例:
**For循环实现:**
```c
#include <stdio.h>
unsigned long long factorial(int n) {
if (n == 0 || n == 1)
return 1; // 阶乘的基础情况
unsigned long long fact = 1;
for (int i = 2; i <= n; ++i) {
fact *= i;
}
return fact;
}
int main() {
int n;
printf("请输入一个正整数: ");
scanf("%d", &n);
printf("阶乘结果是: %llu\n", factorial(n));
return 0;
}
```
**While循环实现:**
```c
#include <stdio.h>
#include <math.h> // 引入math库,因为long long max值有限制,防止溢出
unsigned long long factorial(int n) {
unsigned long long fact = 1;
if (n > 1) {
int i = 2;
while (i <= n) {
fact *= i;
++i;
}
}
return fact;
}
int main() {
int n;
printf("请输入一个正整数: ");
scanf("%d", &n);
printf("阶乘结果是: %llu\n", factorial(n));
return 0;
}
```
这两个程序都首先检查输入的是否为0或1,因为0和1的阶乘都是1。然后通过循环累乘从2到n的所有数字得到阶乘。
阅读全文
相关推荐

















