数学趣题——递归法寻找最小值
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: }

浙公网安备 33010602011771号