C语言-递归法寻找数组中最小值

太过爱你忘了你带给我的痛 2023-07-08 02:58 110阅读 0赞
  1. int getMin(int array[], int n) {
  2. int val1, val2, val3;
  3. if (n == 1)
  4. return array[0];
  5. if (n % 2 == 0) {
  6. val1 = getMin(array, n / 2);
  7. val2 = getMin(array + n / 2, n / 2);
  8. if (val1 < val2)
  9. return val1;
  10. else
  11. return val2;
  12. }
  13. if (n % 2 != 0) {
  14. val1 = getMin(array, n / 2);
  15. val2 = getMin(array + n / 2 + 1, n / 2);
  16. val3 = array[n / 2];
  17. if (val1 < val2) {
  18. if (val1 < val3)
  19. return val1;
  20. else
  21. return val3;
  22. } else {
  23. if (val2 < val3)
  24. return val2;
  25. else
  26. return val3;
  27. }
  28. }
  29. return 0;
  30. }
  31. int main(int argc, const char *argv[]) {
  32. int array[10] = {11, 13, 23, 44, 4, 43, 11, 23, 111, -1}, val;
  33. val = getMin(array, sizeof(array) / sizeof(int));
  34. printf("The minum element of the array is %d \n", val);
  35. return 0;
  36. }

结果:

20200225001841215.png

发表评论

表情:
评论列表 (有 0 条评论,110人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java数组

    递归的精髓在于不断的调用自身,从后往前处理数据计算得出结果。求数组最大值也是从后往前比较,回溯求最值。 往简单的看,和c++/c有很大的相似之处,只是代码表示上有区别。

    相关

    编写一个递归函数,查找数组中最小的数。 注意: 1. 该函数是递归函数,应该通过调用自身来达到要求。 2. 程序中不能使用循环来求最小值 (循环只允许出现一次,用于输入)

    相关 找钱问题_(C语言)

    【问题描述】 公园票价为5角。假设每位游客只持有两种币值的货币:5角、1元。 再假设持有5角的有m人,持有1元的有n人。 由于特殊情况,开始的时候,售票员没有零钱可