四个数比较大小(递归解法)

今天在群里水的时候,看到有的同学提到这个问题,然后我就在电脑上自己敲了一遍。

下面说一下我的解题思路:

首先这个题目就是简单的最值问题。这个问题一般的话有两个思路:

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);
	}
}


  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值