四個數比較大小(遞迴解法)
阿新 • • 發佈:2019-01-22
今天在群裡水的時候,看到有的同學提到這個問題,然後我就在電腦上自己敲了一遍。
下面說一下我的解題思路:
首先這個題目就是簡單的最值問題。這個問題一般的話有兩個思路:
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); } }