2 qq 28839381 qq_28839381 于 2015.07.18 10:23 提问

函数实现数组的逆序输出

int main(int argc, char const *argv[])
{
int a[5] = {1, 2, 3, 4, 5};
int i;

recui(a, 5);

for(i=0; i<5; i++)
{
    printf("%d ", a[i]);
}
printf("\n");
return 0;

}

void recui(int a[], int k)
{
int tmp;

if()// 填空
{
    recui();//填空
    tmp = a[0];
    a[0] = a[k - 1];
    a[k - 1] = tmp;
}

}

应该怎么填呢?

6个回答

arronbnm
arronbnm   2015.07.18 14:50
已采纳

If(k>1) Recur

qq_28839381
qq_28839381 回复arronbnm: 不好意思,搞错了。这没有问题
2 年多之前 回复
qq_28839381
qq_28839381 回复arronbnm: 不适用其他数组
2 年多之前 回复
arronbnm
arronbnm 每一次递归,对头尾元素进行互换;将头尾去除后,进行下一次递归;直至数组只剩下1个或者0个元素,因为不需要互换了所以结束。
2 年多之前 回复
qq_28839381
qq_28839381 回复arronbnm: 什么思路啊?
2 年多之前 回复
arronbnm
arronbnm 我去;竟然发出去了。if(k>1) recui(a+1,k-2)
2 年多之前 回复
CSDNXIAOD
CSDNXIAOD   2015.07.18 10:26

使用函数和指针实现数组的逆序输出
数组逆序输出
数组逆序输出
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

91program
91program   Ds   Rxr 2015.07.18 10:44

还是递归算法啊!这么简单的算法,竟然用递归,真是没事找事!
给你一段做对参考:

#include <stdio.h>

#define N 10

void main()
{
    void fun(int a[],int);
    int i,a[N];
    for(i=0;i<N;i++)
        a[i]=i;
    fun(a,N);
    printf("/n");
}

void fun(int a[],int i)
{
    if(i>0)//不可去掉if后的花括号。否则,fun(a,--i);语句会导致本函数成为死循环
    {
        printf("%-5d",a[i-1]);
        fun(a,--i);
    }
}

qq_28839381
qq_28839381 这是一道题目
2 年多之前 回复
laigezao
laigezao   2015.07.18 11:12

if k>0

recui(a,k--)

laigezao
laigezao 回复qq_28839381: sorry 没看清 楼下正解
2 年多之前 回复
qq_28839381
qq_28839381 Segmentation fault (core dumped)
2 年多之前 回复
Evankaka
Evankaka   Ds   Rxr 2015.07.18 11:26

void fun(int a[],int i)

{

if(i>0)
printf("%-5d",a[i-1]);

fun(a,--i);

}

}

sq419412002
sq419412002   2015.07.20 11:37

递归,学习一下

Csdn user default icon
上传中...
上传图片
插入图片