日期:2014-05-20  浏览次数:20611 次

一个递归题
C/C++ code

void invert(int a[] int k)
{
int t;
if(_1__)
{
invert(____2____)
t=a[0];
a[0]=a[k-1];
a[k-1]=t;

}
}




递归函数inver(int a[],int k)将指定数组中的前k个元素逆置
完成程序

------解决方案--------------------
#include<stdio.h>

void invert(int a[],int k)
{
int t=0;
if(k>2)
{
invert(a+1,k-2);
}
t=a[0];
a[0]=a[k-1];
a[k-1]=t;
}

void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int k=10;
invert(a,k);
for(int i=0;i<10;i++)
{
printf("%d \t",a[i]);
}
}

输出:10 9 8 7 6 5 4 3 2 1
------解决方案--------------------
(1)k>1
(2)&a[1],k-2
------解决方案--------------------
#include<stdio.h>
void invert(int a[],int k)
{
if(k==1)printf("%d",a[0]);
else 
{
printf("%-3d ",a[k-1]);
invert(a,k-1);
}
}
void main() 

int a[10]={1,2,3,4,5,6,7,8,9,10};
invert(a,10);