要求用递归算法倒序一个数组

李小嘉 发布于 2015/10/02 12:19
阅读 306
收藏 0
#include<stdio.h>
#define SIZE 10
int i;
void chage(int *p, int len);
int main(void)
{
int array[SIZE];
for(i = 0; i < SIZE; i++)
array[i] = i;
for(i = 0; i < SIZE; i++)
printf("%d\n", array[i]);

chage(array, SIZE);
for(i = 0; i < SIZE; i++)
printf("%d\n", array[i]);
return 0;
}
void chage(int *p, int len)
{
if(len = 1 || len == 0)
return ;


int temp = *p;
*p = *(p + len -1);
*(p + len -1) = temp;
chage((p - 1), len-2);


}

以下是问题补充:

@李小嘉:这个程序是有问题的得不到我想要的答案,想问下各位有没有更好的办法用递归倒序一个数组,同时我也想知道这个程序问题出在哪里 (2015/10/02 12:54)
@李小嘉:#include<stdio.h> #define SIZE 10 int i; void chage(int *p, int len); int main(void) { int array[SIZE]; for(i = 0; i < SIZE; i++) array[i] = i; for(i = 0; i < SIZE; i++) printf("%3d", array[i]); printf("\n"); chage(array, SIZE); for(i = 0; i < SIZE; i++) printf("%3d", array[i]); printf("\n"); return 0; } void chage(int *p, int len) { if(len == (SIZE/2)) return ; int temp = p[10-len]; p[10-len] = p[len -1]; p[len -1] = temp; chage(p, len-1); } 这样就OK了,结束条件错了 (2015/10/02 23:09)
加载中
0
excepiton
excepiton
嗯,不错
李小嘉
李小嘉
不是,这个程序是有问题的,想请教各位大神问题在哪,有没有更好的办法就用递归倒序一个数组
0
您的好友
您的好友
*p = *(p + len -1);
*(p + len -1) = temp;

你这两句有问题啊  不能这么写的



李小嘉
李小嘉
我比较笨,有时候得得你们大侠多多指教才行;后来我找出原因了,是中间结束条件搞错了,应该是在数组中间停止就对了;
您的好友
您的好友
额。。。。。难道要人吧所有的地方都给你指出来才行? chage(p—1,len—2); 上面那三句加上这一句 总共四句把你原来那里的四句换掉 已经吧lz的错误指出来了 lz也要自己思考的吖 [30][30]
李小嘉
李小嘉
回复 @您的好友 : 这样改的话只能实现第一个数和最后一个数呼唤不能达到目的,要点是如何实现递归调用函数
您的好友
您的好友
回复 @李小嘉 : if(len = 1 || len == 0) 这里等号写错了
您的好友
您的好友
回复 @李小嘉 : int temp = p[0]; p[0] = p[len - 1]; p[len -1] = temp; 这样
下一页
0
老帖子
function chage(arr) {
  return arr.length ? arr.slice(-1).concat(chage(arr.slice(0, -1))) : [];
}



不知是否达到了LZ的要求

李小嘉
李小嘉
看不懂,我想要的结果是利用递归调用函数实现数据倒序
返回顶部
顶部