6.6递归法寻找最小值

Q:编写一个程序,从一个整数序列中找到最小的元素,并用递归方法实现。

#include<iostream>
using namespace std;

int getmin(int array[],int n) {
	int val1,val2,val3;
	if(n==1) return array[0];
	if(n%2==0) {
		val1=getmin(array,n/2);
		val2=getmin(array+n/2,n/2);
		if(val1<val2)
			return val1;
		else
			return val2;
	}
	
	if(n%2!=0) {
		val2=getmin(array,n/2);
		val2=getmin(array+n/2+1,n/2);
		val3=array[n/2];
		if(val1<val2) {
			if(val1<val3)	return val1;
			else return val3;
		}
		else {
			if(val2<val3)	return val2;
			else return val3;
		}
	}
}

int main() {
	int n;
	cin>>n;
	int array[100];
	for(int i=0;i<n;i++)
		cin>>array[i];
	cout<<getmin(array,n);
	
	return 0;
}

  

拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
原文地址:https://www.cnblogs.com/dd2hm/p/6811946.html