题目要求用递归求出一个数组的最大值和最小值,递归函数是MinMaxValue(arr,n,&max,&min)n是数组的个数。

#include<stdio.h>voidMinMaxValue(intarr[],intn,int*max,int*min){if(n=2){if(*max<arr[1... #include <stdio.h>
void MinMaxValue(int arr[],int n,int *max,int *min){
if(n=2)
{
if(*max<arr[1])*max=arr[1];
else if(*min>arr[1])*min=arr[1];
}
else {
MinMaxValue(arr,n-1,max,min);
if(*max<arr[n-1])*max=arr[n-1];
else if(*min>arr[n-1])*min=arr[n-1];
}
}
void main()
{
int max,min;
int arr[]={12,34,23,25,22,67,188,-1};
max=arr[0];
min=arr[0];
MinMaxValue(arr,sizeof(arr),&max,&min);
printf("max=%d\nmin=%d\n",max,min);
}
运行结果 max=34
min=12

求助:不明白为什么会这样Orz
展开
 我来答
松甜恬0Je4ba
2012-09-22 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3427万
展开全部
#include <stdio.h>
void MinMaxValue(int arr[],int n,int *max,int *min)
{
if(n==2) //这里不是= 而是 ==
{
if(*max<arr[1]) *max=arr[1];
else if(*min>arr[1]) *min=arr[1];
return;
}
else
{
MinMaxValue(arr,n-1,max,min);
if(*max<arr[n-1])*max=arr[n-1];
else if(*min>arr[n-1])*min=arr[n-1];
}
}
int main()
{
int max,min;
int arr[]={12,34,23,25,22,67,188,-1};
max=arr[0];
min=arr[0];
MinMaxValue(arr,sizeof(arr)/sizeof(int),&max,&min); //这里不是sizeof(arr),而是
printf("max=%d\nmin=%d\n",max,min);
getchar();
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caihongbage
2012-09-22 · 超过18用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:52.6万
展开全部
已改,看注释

#include <stdio.h>
void MinMaxValue(int arr[],int n,int *max,int *min)
{
if(n==2) // 判断相等应该用两个=
{
if(*max<arr[1])*max=arr[1];
else if(*min>arr[1])*min=arr[1];
}
else
{
MinMaxValue(arr,n-1,max,min);
if(*max<arr[n-1])*max=arr[n-1];
else if(*min>arr[n-1])*min=arr[n-1];
}
}
void main()
{
int max,min;
int arr[]={12,34,23,25,22,67,188,-1};
max=arr[0];
min=arr[0];
MinMaxValue(arr,sizeof(arr)/sizeof(int),&max,&min); // 数组大小是sizeof(arr)/sizeof(int)
printf("max=%d\nmin=%d\n",max,min);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式