遞歸求解最大值和最小值


遞歸求解最大值和最小值

思路

這里使用遞歸實際是把大問題轉化為小問題,尋找最大值和最小值都可以看作數組的最后一個位置的元素和剩下的所有元素的最值進行比較,由此可以轉化為遞歸問題。

代碼實現

#include<bits/stdc++.h>
using namespace std;
const int maxn=100;
int search_max(int a[], int n)
{
	if(n==1)
		return a[0];
	else 
	{
		int tmp=search_max(a, n-1);
		return a[n-1] > tmp ? a[n-1]:tmp; 
	}
}
int search_min(int a[], int n)
{
	if(n==1)
		return a[0];
	else 
	{
		int tmp=search_min(a, n-1);
		return a[n-1] < tmp ? a[n-1]:tmp; 
	}
}
/*
	產生n個[min, max]的隨機數。可能會有重復值。
*/
void initRandomize(int *arr, int n, int min, int max)
{
    int i = 0;
    srand(time(0));  			/*設置種子,並生成偽隨機序列*/
    for (i = 0; i < n; ++i) {
        arr[i] = rand() % (max - min + 1) + min;  /*得到從[min, max]之間的隨機數*/
        printf("%d ", arr[i]);
    }
    printf("\n\n");
}
int main()
{
	int a[15];
	initRandomize(a, 10, 0, 10);
	cout<<"最大值為:"<<search_max(a, 10)<<endl;
	cout<<"最小值為:"<<search_min(a, 10)<<endl;
	return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM