注册 登录
编程论坛 新人交流区

递归法数组倒置

Cking 发布于 2007-11-03 22:37, 491 次点击
void invert(int a[], int k)
{
int t;
if(1);
{
invert(2);
t=a[0];
a[0]=a[k-1];
a[k-1]=t;
}
}

功能对一个数组的前K个元素进行倒置。
那1和2应该填什么?
我看了半天认为:1处是k>1;
2处是(a,k-1)
VC上没有试出来。
3 回复
#2
作弊2007-11-04 00:08
t=a[0];
a[0]=a[k-1];
a[k-1]=t;
错了
每次都是在替换 a[0]和k元素

=======

int k=0
invert(a, k)
{
int t
if(k<a.length/2) //调换前1/2 即可
{
invert(k+1)
t=a[k]
a[k]=a[a.length-k-1]
a[a.length-k-1]=t
}
}

未测试
#3
Cking2007-11-04 13:28
但是题目没有说int k=0;
#4
毛山道士2007-11-04 15:18
2楼上的兄弟说的对啊
1