此有关递归函数的题目是否有问题???

blueskystudio 2001-08-17 09:57:18
递归函数:dec(int a[],int n)判断数组a[]的前n个元素是否是不递增的。不递增返回1,否则返回0。

int dec(int a[],int n)
{ if(n<=1) ________;
if(a[0]<a[1]) return 0;
return _________;
}
本人觉得此题有问题,应改为:
int dec(int a[],int n)
{ if(n<=1) ________;
if(a[0]>=a[1]) return 1;
return _________;
}
或:把题目改为不递减。
请各位赐教!!!!!

我的答案:
int dec(int a[],int n)
{ if(n<=1) return 0;
if(a[0]>=a[1]) return 1;
return dec(a+1,n-1);
}
注:本题载自2000年程序员考试。
...全文
119 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lakelive 2001-08-18
  • 打赏
  • 举报
回复
TAlucard(Alucard)的解法很清楚,题目没有错,是提问的没看懂。
不递增就是:所有数均满足后一个数<=前一数
首先看n,如n<=1,一个数或零一个数自然是满足不递增当然返回1;
否则看第一个数if(a[0]<a[1]),出现这种情况违背不递增的原则,后面的数自然不用判断了,返回0;
if不为真,即第一个数满足要求,那就要看后面的数返回的值,此处就递归,自然就返回dec(a+1,n-1);
如果还不明白,在计算机上一步步调试,看看调试过程。
奉劝提问者,程序员或是高级程序员尽管没多大用,如果你想考程序员或是高级程序员,你要好好努力,如果到时连这样的题目也看不懂,不考也罢,考了也通不过。
one_add_one 2001-08-18
  • 打赏
  • 举报
回复
书上的东西有很多BUG!

这个很平常!

看时还是要自己动脑筋!
林仪明 2001-08-18
  • 打赏
  • 举报
回复
楼上的,同意你的看法!!呵呵~!!
TAlucard 2001-08-17
  • 打赏
  • 举报
回复
顶楼的解法错了,根本无法递归。
楼上的永远也返回不了非0值
my solution:
int dec(int a[],int n)
{ if (n<=1) return 1;//前n个数均为非递增
if (a[0]<a[1]) return 0;//发现递增,返回0
return dec(a+1,n-1);//非递增,进行下轮比较
}
smq 2001-08-17
  • 打赏
  • 举报
回复


int dec(int a[],int n)
{ if(n<=1) return 0;
if(a[0]<a[1]) return 0;
return dec(a+1, n-1);
}
one_add_one 2001-08-17
  • 打赏
  • 举报
回复
你是对的!
TAlucard 2001-08-17
  • 打赏
  • 举报
回复
请问,我的解法有问题吗?
vive 2001-08-17
  • 打赏
  • 举报
回复
不递增并不是递减,概念要搞清楚
TAlucard 2001-08-17
  • 打赏
  • 举报
回复
TO: bluess
"不递增" means a[i]>=a[i+1]
so
a[0]<a[1]不是不递增,正应当立即返回。
Bluess 2001-08-17
  • 打赏
  • 举报
回复
同意 blueskystudio
不同意 TAlucard

To:TAlucard
若执行了这句--------if (a[0]<a[1]) return 0;
还会执行------------return dec(a+1,n-1);

????????


33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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