数学趣题——递归法寻找最小值

1、题目

从一个整数序列中找出最小的元素,并用递归的方法实现

2、源码(二分序列递归)

   1: #include <stdio.h>
   2:  
   3: int getMin(int array[], int n)
   4: {
   5:     int val1, val2, val3;
   6:  
   7:     if(n == 1) return array[0];
   8:  
   9:     if(n % 2 == 0)
  10:     {
  11:         val1 = getMin(array, n / 2);
  12:         val2 = getMin(array + n / 2, n / 2);
  13:  
  14:         if(val1 < val2)
  15:             return val1;
  16:         else
  17:             return val2;
  18:     }
  19:  
  20:     if(n % 2 != 0)
  21:     {
  22:         val1 = getMin(array, n / 2);
  23:         val2 = getMin(array + n / 2 + 1, n / 2);
  24:         val3 = array[n/2];
  25:  
  26:         if(val1 < val2)
  27:         {
  28:             if(val1 < val3) return val1;
  29:             else return val3;
  30:         }
  31:         else
  32:         {
  33:             if(val2 < val3) return val2;
  34:             else return val3;
  35:         }
  36:     }
  37: }
  38:  
  39: int main()
  40: {
  41:     int array[9] = {11, 13, 23, 56, 8, 23, 11, 23, 111}, val;     /*测试的数组,其中元素8为最小值*/
  42:     val = getMin(array, 9);                        /*调用递归函数getMin获得最小值*/
  43:     printf("%d", val);
  44:     printf("The minum element of this array is %d \n", val);
  45:     return 0;
  46: }
原文地址:https://www.cnblogs.com/steven_oyj/p/1744946.html