帮我写一个简单的C语言递归代码,并且说明每句代码的作用
时间: 2024-10-11 22:12:31 浏览: 24
操作系统作业 c语言实现递归遍历输出FAT32+源代码+文档说明
当然,这里是一个简单的C语言递归代码示例,实现了一个计算阶乘的功能:
```c
#include <stdio.h>
// 定义递归函数 factorial
unsigned long long factorial(int n) {
// 如果n为0或1,返回1,这是递归的基本情况
if(n == 0 || n == 1)
return 1;
// 递归情况:n的阶乘等于n乘以n-1的阶乘
else
return n * factorial(n - 1);
}
int main() {
int num;
// 输入数字
printf("请输入一个正整数: ");
scanf("%d", &num);
// 调用factorial函数并打印结果
unsigned long long result = factorial(num);
printf("输入数字 %d 的阶乘是: %llu\n", num, result);
return 0;
}
```
逐句解释:
1. `#include <stdio.h>`:包含标准输入输出库,用于读取用户输入和显示结果。
2. `unsigned long long factorial(int n)`:定义一个名为factorial的递归函数,接受一个整型参数n,返回类型为无符号长整型(支持大数值),用于存储阶乘的结果。
3. `if(n == 0 || n == 1) return 1;`:基本情况判断,如果n为0或1,直接返回1,因为0和1的阶乘都是1。
4. `else return n * factorial(n - 1);`:递归情况,当n大于1时,调用自身计算n-1的阶乘,然后将n乘以这个结果,这就是递归的本质——不断缩小问题规模直到达到基本情况。
5. `int main()`:程序入口点,所有代码从这里开始执行。
6. `scanf("%d", &num);`:从用户处获取一个整数输入。
7. `unsigned long long result = factorial(num);`:调用factorial函数计算给定数的阶乘,并将结果保存到result变量中。
8. `printf("输入数字 %d 的阶乘是: %llu\n", num, result);`:输出结果,格式化字符串用于展示输入数字及其对应的阶乘。
9. `return 0;`:表示程序正常结束。
阅读全文