[编程题] 用递归求数组最大值的位置
很奇葩的一道题,初看很简单,结果想了很久才写出来: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 1、lz的思路已经很巧妙了,只要把返回值换回成数组的下标,注意比较时取数组值即可。2、代码中还要加一个容错处理,就是当输入值n<1时,(0或负数都可能),函数的返回值,或者做报错信号,或者兼容n=1处理。
页:
[1]