今天在群里水的时候,看到有的同学提到这个问题,然后我就在电脑上自己敲了一遍。
下面说一下我的解题思路:
首先这个题目就是简单的最值问题。这个问题一般的话有两个思路:
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);
}
}