请写一段c语言递归函数代码并解释清楚每一步程序
时间: 2024-03-18 07:40:21 浏览: 64
c语言递归函数写法
5星 · 资源好评率100%
好的,以下是一个简单的 C 语言递归函数代码,用于计算一个整数的阶乘:
```
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
int main() {
int n = 5;
printf("%d 的阶乘为 %d\n", n, factorial(n));
return 0;
}
```
在这个程序中,我们定义了一个名为 `factorial` 的递归函数,它接受一个整数参数 `n`,并返回 `n` 的阶乘。
在 `factorial` 函数中,首先判断参数 `n` 是否为 0,如果是,则直接返回 1。如果不是,则递归调用 `factorial` 函数计算 `n-1` 的阶乘,并将其乘以 `n` 返回。
在 `main` 函数中,我们指定要计算 5 的阶乘,并调用 `factorial` 函数计算它的值。最后,将计算结果打印出来。
程序输出结果为:
```
5 的阶乘为 120
```
这表明 5 的阶乘为 120。
程序的递归过程可以简单描述为:
1. 调用 `factorial(5)`,需要计算 5 的阶乘。
2. 在 `factorial` 函数中,判断 `n` 是否为 0,发现不是,进入 else 分支。
3. 递归调用 `factorial(4)`,需要计算 4 的阶乘。
4. 在 `factorial` 函数中,判断 `n` 是否为 0,发现不是,进入 else 分支。
5. 递归调用 `factorial(3)`,需要计算 3 的阶乘。
6. 在 `factorial` 函数中,判断 `n` 是否为 0,发现不是,进入 else 分支。
7. 递归调用 `factorial(2)`,需要计算 2 的阶乘。
8. 在 `factorial` 函数中,判断 `n` 是否为 0,发现不是,进入 else 分支。
9. 递归调用 `factorial(1)`,需要计算 1 的阶乘。
10. 在 `factorial` 函数中,判断 `n` 是否为 0,发现不是,进入 else 分支。
11. 递归调用 `factorial(0)`,需要计算 0 的阶乘。
12. 在 `factorial` 函数中,判断 `n` 是否为 0,发现是,返回 1。
13. 回溯到上一层递归调用,将返回值 1 乘以 1,得到 1。
14. 回溯到上一层递归调用,将返回值 1 乘以 2,得到 2。
15. 回溯到上一层递归调用,将返回值 2 乘以 3,得到 6。
16. 回溯到上一层递归调用,将返回值 6 乘以 4,得到 24。
17. 回溯到上一层递归调用,将返回值 24 乘以 5,得到 120。
18. 返回最终结果 120。
阅读全文