int temp = *n -2;
qw(i,&temp,m);
解决你的问题,点赞采纳,谢谢!
应该不能嵌套
【以下回答由 GPT 生成】
修改代码如下:
#include<stdio.h>
int qw(int* i, int* n, int* m) {
if (*n >= 2) {
*n = *n - 2; // 修改此行
qw(i, n, m); // 修改此行
}
if (*n == *m)
printf("%d\n", *i);
return 0; // 添加此行
}
int main() {
int i = 0;
int n, m;
scanf("%d", &n);
m = n;
qw(&i, &n, &m);
return 0; // 添加此行
}
修改的地方如下: 1. 在函数qw
内部,将*n
的值减去2,需要修改代码为*n = *n - 2;
,以正确计算*n-2的值。 2. 在函数qw
内部的递归调用中,传入参数n
时,应该保持不变,不需要减去2,所以修改为qw(i, n, m);
。 3. 在函数qw
内部添加缺失的返回语句return 0;
,因为函数的返回值类型是int
。 4. 在main
函数的最后添加缺失的返回语句return 0;
。
这样修改后,代码能够正确传递*n-2的值作为地址参数。
【相关推荐】