![]() |
#2
forever742023-04-04 14:29
|

#include<stdio.h>
#include<math.h>
void fun(int *a,int i,int j){
int t;
if(i<j){
t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
for(i=0;i<4;i++)
printf("%2d",a[i]);
fun(a,i,j);
}
}
int main(){
int x[]={2,6,1,8},i;
fun(x,0,3);
for(i=0;i<4;i++)
printf("%2d",x[i]);
printf("\n");
}
输出:【
8 6 1 2 8 6 1 2
--------------------------------
Process exited after 0.04188 seconds with return value 0
请按任意键继续. . .
】
为什么这里只输出两次不应该是三次嘛,一次是i=0,j=3,i<j 成立;二次是i=1;j=2;i<j成立,并且“ 8 6 1 2”应该变成了“ 8 1 6 2”了呀
而且我把fun函数的for循环注释掉,就能输出“ 8 1 6 2”,如果不注释掉就是上面输出的那种情况,
我把main函数的输出注释掉,只有一次输出,所以总结出来上面的输出应该是fun函数一次输出,main函数一次输出,所以fun函数还有一次输出为什么不执行,只有i<j的时候不执行啊
有人帮我看看这个题目嘛?(如果又是向上次那样是小细节问题没注意到,那真的不好意思)
[此贴子已经被作者于2023-4-4 12:56编辑过]