C 分治问题

来源:百度知道 编辑:UC知道 时间:2024/05/03 05:42:40
int d[10]={10,12,15,9,23,88,3,45,87,32};
int j=100,k=100;
main()
{
void fen(int a,int b,int max,int min);

fen(0,9,j,k);
printf(" max %d min %d",j,k);
getchar();
}
void fen(int a,int b,int max,int min)
{
int z,amax,bmax,amin,bmin;
if(a==b)
{
max=d[a];
min=d[a〕;
}
else if(a==b-1)
{
if(d[a]>d[b])
{
max=d[a];
min=d[b];
}
else {
max=d[b];
min=d[a];
}
}
else{
z=(a+b)/2;

fen(a,z,amax,amin);
fen(z+1,b,bmax,bmin);

if(amax>bmax)
max=amax;
else max=bmax;

发现了个明显的错误,楼主用函数参数传递方式不对---数值传递
void fen(int a,int b,int max,int min)
{
//code}
在调用fen函数之后内存就释放了max min 的值了,所以。。。不多解释了,楼主基础不扎实啊。
如果你用的是VC++,可以采用引用传递(c++) 把fen函数的形参改成void fen(int a,int b,int &max,int &min)

还有就是几个小语法上的错误了
max 88 min 3