主题:C语言递归问题
qianying01
[专家分:0] 发布于 2010-12-19 19:15:00
各位大哥哥,大姐姐,我刚学C语言遇到一难题,请赐教。
编写一个递归函数Reverse(int a[],int s,int e)
其功能是将数组中整数颠倒顺序,
执行前,a[]={0,1,2,3,8,5,6}
执行后,a[]={0,1,3,2,1,5,6}
最后更新于:2010-12-20 19:02:00
回复列表 (共3个回复)
沙发
bruceteen [专家分:42660] 发布于 2010-12-19 20:47:00
void Reverse( int a[], int s, int e )
{
if( s < e )
{
int t = a[s];
a[s] = a[e];
a[e] = t;
}
}
#include <stdio.h>
int main()
{
int a[] = { 0,1,2,3,4,5,6 };
Reverse( a, 1, 4 );
for( int i=0; i<sizeof(a)/sizeof(a[0]); ++i )
printf( "%d ", a[i] );
printf( "\n" );
return 0;
}
板凳
qianying01 [专家分:0] 发布于 2010-12-19 21:58:00
谢谢你的解决方案,
但是它只能实现第1个数组元素和第4个互换,第2个和第3个没有互换。
3 楼
bruceteen [专家分:42660] 发布于 2010-12-20 08:30:00
void Reverse( int a[], int s, int e )
{
if( s < e )
{
int t = a[s];
a[s] = a[e];
a[e] = t;
[color=FF0000]Reverse( a, s+1, e-1 );[/color]
}
}
#include <stdio.h>
int main()
{
int a[] = { 0,1,2,3,4,5,6 };
Reverse( a, 1, 4 );
for( int i=0; i<sizeof(a)/sizeof(a[0]); ++i )
printf( "%d ", a[i] );
printf( "\n" );
return 0;
}
我来回复