c语言实现n的阶乘递归
时间: 2023-11-25 18:05:38 浏览: 164
要在C语言中实现n的阶乘的递归,可以使用以下代码:
```
#include <stdio.h>
long factorial(int n) {
if (n < 0) {
printf("你的输入有误");
} else if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n;
long result;
printf("请输入n的值:\n");
scanf("%d", &n);
result = factorial(n);
printf("%d的阶乘是%ld\n", n, result);
return 0;
}
```
这段代码首先定义了一个递归函数`factorial`,它接受一个整数参数n,并返回n的阶乘。在递归函数中,如果n小于0,则输出错误信息;如果n等于0或1,则返回1;否则,返回n乘以(n-1)的阶乘。
在`main`函数中,首先接收用户输入的n的值,然后调用`factorial`函数计算n的阶乘,并将结果打印出来。
相关问题
c语言实现n阶阶乘的递归算法
C语言实现n阶阶乘的递归算法如下:
```c
#include <stdio.h>
int factorial(int n)
{
if (n == 0) // 当n为0时,直接返回1,递归的终止条件
return 1;
else
return n * factorial(n - 1); // 递归调用,将问题不断简化为求(n-1)阶乘
}
int main()
{
int n;
printf("请输入一个非负整数:");
scanf("%d", &n);
printf("%d的阶乘为:%d\n", n, factorial(n));
return 0;
}
```
运行此程序,用户输入一个非负整数n,程序通过递归算法计算n的阶乘值,并输出结果。这个递归函数`factorial()`是通过将问题不断简化为求(n-1)阶乘来实现的,直到问题简化到n为0时,返回1作为终止条件。
这一段c语言实现的阶乘算法
这一段提到的"C语言实现的阶乘算法"可以使用循环或者递归的方式来实现。
使用循环方式实现阶乘算法的代码如下:
```c
#include <stdio.h>
int factorial(int n) {
int result = 1;
for(int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
int main() {
int n = 5;
int result = factorial(n);
printf("%d的阶乘是%d\n", n, result);
return 0;
}
```
使用递归方式实现阶乘算法的代码如下:
```c
#include <stdio.h>
int factorial(int n) {
if(n == 1) {
return 1;
} else {
return n * factorial(n-1);
}
}
int main() {
int n = 5;
int result = factorial(n);
printf("%d的阶乘是%d\n", n, result);
return 0;
}
```
无论是使用循环还是递归方式实现,阶乘算法的时间复杂度都是O(n)。