1. 程式人生 > >四個數比較大小(遞迴解法)

四個數比較大小(遞迴解法)

今天在群裡水的時候,看到有的同學提到這個問題,然後我就在電腦上自己敲了一遍。

下面說一下我的解題思路:

首先這個題目就是簡單的最值問題。這個問題一般的話有兩個思路:

1、定義一個數為最值,然後與其餘的數進行比較然後比較,找出最值。

   2、對所有的數進行排序,然後從排序好的數裡面就可以找到最值。當然排序的方法有很多

   最簡單的就是利用C++的STL呼叫sort函式或者qsort進行排序。

總的來說這兩種方法的實質就是數之間的比較,然後來回的賦值。然後就可以找到最大的值。

解題要點:

 就這道題來說,用遞迴的解法與上述的解法的實質也是一樣的,也需要進行比較與賦值。

 我的解題方法:就是預設第一個數是最大(小)值,然後讓第一個與其餘的比較,將大的值賦值給第一個數,

 繼續進行比較。當一個數比其他數都大時結束遞迴。返回的第一個數,就是最大(小)值。

下面是我的程式碼:

#include<stdio.h>
int max(int a,int b,int c,int d);
int main()
{
	int a,b,c,d;
	while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
		printf("%d\n",max(a,b,c,d));
}
int max(int a,int b,int c,int d)
{
	int number=a;
	if(number>=b&&number>=c&&number>=d)
	{
		return number;
	}
	else
	{
		if(number<b) max(b,b,c,d);
		else if(number<c) max(c,b,c,d);
		else max(d,b,c,d);
	}
}