![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C语言:用减半递推法和递归求数组最大值。 5
#include<stdio.h>#defineN10intMAX(inta[],intp,intq){intm,n;if(p==q)m=a[p];else{m=MAX(...
#include<stdio.h>
#define N 10
int MAX(int a[],int p,int q)
{
int m,n;
if(p==q) m=a[p];
else {
m=MAX(array,p,(p+q)/2);
n=MAX(array,(p+q)/2+1,q);
if(m<n) m=n;
}
return m;
}
main()
{int array[]={1,88,45,12,5,644,14,2,87,65} ,M;
M=MAX(array ,1,9);
printf("%d\n",M);
}
为什么显示我的array未申明??? 展开
#define N 10
int MAX(int a[],int p,int q)
{
int m,n;
if(p==q) m=a[p];
else {
m=MAX(array,p,(p+q)/2);
n=MAX(array,(p+q)/2+1,q);
if(m<n) m=n;
}
return m;
}
main()
{int array[]={1,88,45,12,5,644,14,2,87,65} ,M;
M=MAX(array ,1,9);
printf("%d\n",M);
}
为什么显示我的array未申明??? 展开
1个回答
展开全部
在MAX函数里面你用到了array,但是array是你在main函数里面定义的局部变量,在MAX函数是不可见的,所以提示未声明,你的MAX函数应该修改为:
int MAX(int a[],int p,int q)
{
int m,n;
if(p==q) m=a[p];
else {
m=MAX(a,p,(p+q)/2);
n=MAX(a,(p+q)/2+1,q);
if(m<n) m=n;
}
return m;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询