编写一个C程序,用递归求n的阶乘
时间: 2023-08-28 19:03:29 浏览: 55
好的,以下是C语言递归求n的阶乘的程序:
```c
#include <stdio.h>
int factorial(int n) {
if(n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("%d的阶乘为:%d\n", n, factorial(n));
return 0;
}
```
程序中的 `factorial` 函数利用递归的思想,当输入的参数为0或1时,直接返回1;否则返回n与 factorial(n-1) 的乘积。在 `main` 函数中,我们通过输入一个正整数n,调用 `factorial` 函数来求出n的阶乘,并输出结果。
希望这个程序能够帮助你!
相关问题
编写一个C程序,用函数调用求8的阶乘
好的,以下是 C 代码实现:
```c
#include <stdio.h>
int factorial(int n);
int main() {
int n = 8;
int result = factorial(n);
printf("%d! = %d\n", n, result);
return 0;
}
int factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n-1);
}
}
```
在这个程序中,我们定义了一个递归函数 `factorial()` 来计算阶乘。当输入参数 `n` 为 1 时,函数返回 1,否则函数返回 `n` 乘以 `factorial(n-1)` 的结果。在 `main()` 函数中,我们调用 `factorial(8)` 来计算 8 的阶乘,并将结果输出。
编写一个求n阶乘的C语言文件,使用gcc工具编译该源程序并运行。求n阶乘文件设置断点,使用gdb工具观察该程序的递归调用过程,并观察n的值。
好的,以下是求n阶乘的C语言文件:
```c
#include <stdio.h>
int factorial(int n)
{
if (n == 0)
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;
}
```
使用gcc工具编译该源程序:
```
gcc -g -o factorial factorial.c
```
其中,-g参数用于生成调试信息,-o参数用于指定生成的可执行文件名为factorial。
然后,使用gdb工具观察该程序的递归调用过程:
```
gdb factorial
```
在gdb中,设置断点:
```
break factorial
```
然后运行程序:
```
run
```
当程序执行到断点处时,使用如下命令观察n的值:
```
print n
```
使用如下命令继续执行程序:
```
continue
```
当程序执行完毕时,退出gdb:
```
quit
```