c语言 完整代码 用递归实现n的阶乘
时间: 2025-01-30 17:05:12 浏览: 26
在C语言中,你可以使用递归函数来计算一个数`n`的阶乘。递归是一种解决问题的方法,它将大问题分解成小的、相似的问题,直到达到基本情况为止。下面是一个完整的C语言代码示例:
```c
#include <stdio.h>
// 递归函数定义,计算阶乘
unsigned long long factorial(int n) {
// 基本情况:0和1的阶乘为1
if (n == 0 || n == 1)
return 1;
// 递归情况:n! = n * (n - 1);
}
int main() {
int num;
printf("请输入一个非负整数:");
scanf("%d", &num);
// 检查输入是否合法
if (num < 0) {
printf("抱歉,阶乘仅对非负整数定义。\n");
return 1;
}
unsigned long long result = factorial(num);
printf("%d 的阶乘是 %llu\n", num, result);
return 0;
}
```
在这个代码里,`factorial()`函数用于计算阶乘,当输入`n`等于0或1时,递归结束返回1;否则,函数会继续调用自身,直到满足基本条件。在`main()`函数中,用户输入一个整数,然后调用`factorial()`并打印结果。
相关问题
c语言函数递归调用实现n的阶乘
在C语言中,函数递归调用可以用来计算一个数n的阶乘。阶乘是指从1乘到该数的所有正整数的积,通常表示为n!。下面是一个简单的递归函数来实现这个功能:
```c
#include <stdio.h>
// 定义阶乘函数,n! = n * (n-1)!
unsigned long long factorial(int n) {
if (n == 0 || n == 1) { // 阶乘的基本情况,0和1的阶乘都是1
return 1;
} else {
return n * factorial(n - 1); // 递归调用,将问题规模缩小,直到达到基本情况
}
}
int main() {
int num;
printf("请输入一个非负整数:");
scanf("%d", &num);
unsigned long long result = factorial(num);
printf("%d 的阶乘是 %llu\n", num, result);
return 0;
}
```
在这个程序中,`factorial`函数首先检查输入的数字是否为0或1,如果是,则返回1作为基础情况。否则,它会通过递归调用自身来计算n * (n-1)!,直到达到基本情况。
c语言非递归实现n的阶乘
在C语言中,非递归方式计算n的阶乘通常会采用循环结构,如for循环或while循环。下面是一个简单的非递归实现示例:
```c
#include <stdio.h>
// 定义一个函数计算n的阶乘
unsigned long long factorial(int n) {
unsigned long long fact = 1; // 初始化阶乘结果为1
for (int i = 1; i <= n; ++i) { // 循环从1到n
fact *= i; // 每次循环都将当前数乘到阶乘上
}
return fact;
}
int main() {
int n;
printf("请输入一个整数: ");
scanf("%d", &n);
if(n < 0) {
printf("负数没有阶乘的概念。\n");
} else {
unsigned long long result = factorial(n);
printf(" %d 的阶乘是: %llu\n", n, result);
}
return 0;
}
```
在这个例子中,`factorial()` 函数通过循环逐个累乘数字,直到达到给定的整数 `n`。
阅读全文
相关推荐















