题目要求用递归求出一个数组的最大值和最小值,递归函数是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 展开
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 展开
2个回答
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已改,看注释
#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);
}
#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);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询