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;
}
}
应该怎么填呢?
If(k>1) Recur
还是递归算法啊!这么简单的算法,竟然用递归,真是没事找事!
给你一段做对参考:
#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);
}
}
if k>0
recui(a,k--)
void fun(int a[],int i)
{
if(i>0)
printf("%-5d",a[i-1]);
fun(a,--i);
}
}
递归,学习一下