大家帮我看看这个程序的输出结果是什么?为什么?

来源:百度知道 编辑:UC知道 时间:2024/06/30 19:50:26
void f(int a[],int i,int j)
{
int t;
if(i<j)
{
t=a[i];a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
void main()
{
int i,a[5]={1,2,3,4,5};
f(a,0,4);
for(i=0;i<5;i++);
printf("%d,",a[i]);
printf("\n");
getch();
}
不对啊,我在Win-tc上运行结果是-36,

输出 5 4 3 2 1

void f(int a[],int i,int j)
{
int t;
if(i<j)
{
t=a[i];a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}

如果i<j 则把数组a[i] a[j] 值互换
调用自己,直到i=j
子程序运行完毕

输出/...

我也不会,你这样问不怎么好,最好是找一些有这知识的高手(在其它人的问题回答中找),点他的名字向他发送信息,这样快一些
分送来吧

进入 f()函数
刚开始赋值
t=0 a【i】=4 a【j】=0
交换a {i}与 a{j}的值
之后经过
f(0.4.0)
在进入循环直到 i<j
所以说你的 结果是对的。
既然你有结果了。
那你具体是实现什么功能。。还是你的预期值不对
程序没有问题。就看你的预期值了。。