苏晓晓 发表于 2013-8-16 10:09:12

[编程题] 用递归求数组最大值的位置 

很奇葩的一道题,初看很简单,结果想了很久才写出来:1.int max(const int a[], int n)2.{3.      if(n == 1)4.               return a;5.       int i = a;6.       int j = max(a+1, n-1);7.      if(i > j)8.               return i;9.       else10.               return j;11.}复制代码结果发现上面的代码是求最大值而不是他的位置……又想了很久始终无解(感觉思路被求最大值绕进去了),求高人解答ps:要求不用global variable,不用static,不可改变max函数的argument

王培培 发表于 2013-8-16 10:14:52

1、lz的思路已经很巧妙了,只要把返回值换回成数组的下标,注意比较时取数组值即可。2、代码中还要加一个容错处理,就是当输入值n<1时,(0或负数都可能),函数的返回值,或者做报错信号,或者兼容n=1处理。
页: [1]
查看完整版本: [编程题] 用递归求数组最大值的位置