回 帖 发 新 帖 刷新版面

主题:C语言递归问题

各位大哥哥,大姐姐,我刚学C语言遇到一难题,请赐教。

编写一个递归函数Reverse(int a[],int s,int e)
其功能是将数组中整数颠倒顺序,
执行前,a[]={0,1,2,3,8,5,6}
执行后,a[]={0,1,3,2,1,5,6}

回复列表 (共3个回复)

沙发

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;
}

板凳


谢谢你的解决方案,
但是它只能实现第1个数组元素和第4个互换,第2个和第3个没有互换。

3 楼


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;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册