去年下午的一道题??不懂啊??是关于递归的。

wfufo2002 2003-10-07 11:00:24
[函数3.2说明]
递归函数invert(int a[],int k)将指定数组中的前k个元素逆置。
[函数3.2]
void invert(int a[] , int k);
{ int t;
if ( (4) ) {
invert( (5) );
t=a[0];
a[0]=a[k-1];
a[k-1]=t;
}
}
请问(5)处为什么填写,a+1,k-2 呢??
请高手详细说明一下。谢谢!!!
...全文
50 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
smuwcwt 2003-10-08
  • 打赏
  • 举报
回复
a+1,是a[1]的地址,
实际上就是调用 一次递归就将数组下标增1,

想一想逆置过程,用递归算法的话,实际上第一次是将a[0]与a[k-1]调换,

那么第二次自然就是将a[1]与a[k-2]调换。

yinya 2003-10-08
  • 打赏
  • 举报
回复
我认为是A+1是将数组的头指针改变了,原来的A[1],变成了现在的A[0],这是数组元素少了一个,而最后一位已经交换,那么K当然减二了
smuwcwt 2003-10-08
  • 打赏
  • 举报
回复
UP
leonhartlx 2003-10-08
  • 打赏
  • 举报
回复
a+1是起始位置步长每次+1 k-2是剩余的数的个数

2,959

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧