|
发表于 2023-10-5 13:27:15
|
显示全部楼层
这段代码有两个问题:
1. 函数 func 声明为 int 类型但是没有返回值。因为函数体内没有 return 语句,所以编译器会报错。
2. 在 func 函数的递归调用中,没有使用返回值。递归调用 func(u+1) 和 func(u+2) 时,返回的值并没有被使用,这样就会导致计算结果不正确。
以下是修改后的代码:
- #include <stdio.h>
- int res = 0;
- void func(int u) {
- if (u == 15) {
- res++;
- return;
- } else if (u < 15) {
- func(u + 1);
- func(u + 2);
- }
- }
- int main() {
- func(0);
- printf("%d", res);
- return 0;
- }
复制代码
修改后的代码中, func 函数的返回类型改为 void ,并且在递归调用中对返回值进行了处理,将其加入到 res 变量中。最后在 main 函数中输出 res 的值即可。 |
|