c++ primer plus书中例程7.17,看了好几遍程序和和书中的没什么区别,为什么运行结果和书中不一致呢,讲的是递归调用的部分,下面是我在vs2013中敲的代码:
#include <iostream>
//#include <string>
using namespace std;
void divide(char ch[],int min,int max,int level);
const int LEN=66;
const int DIV=6;
//#include <climits>
int main()
{
char ruler[LEN];
int i;
for(i=1;i<LEN-2;i++)
ruler[i]=' ';
ruler[0]=ruler[LEN-2]='|';
ruler[LEN-1]='\0';
int min=0;
int max=LEN-2;
cout<<ruler<<endl;
for(i=1;i<=DIV;i++);
{
divide(ruler,min,max,i);
cout<<ruler<<endl;
for(int j=1;j<LEN-2;j++)
ruler[j]=' ';
}
return 0;
}
void divide(char ch[],int min,int max,int level)
{
if(level==0)
return;
int mid=(min+max)/2;
ch[mid]='|';
divide(ch,min,mid,level-1);
divide(ch,mid,max,level-1);
}
运行结果如图1,但是书中的运行结果是下面这个图,想了半天也没明白哪里的问题,大家帮忙看下,谢谢。
:
#include <iostream>
//#include <string>
using namespace std;
void divide(char ch[],int min,int max,int level);
const int LEN=66;
const int DIV=6;
//#include <climits>
int main()
{
char ruler[LEN];
int i;
for(i=1;i<LEN-2;i++)
ruler[i]=' ';
ruler[0]=ruler[LEN-2]='|';
ruler[LEN-1]='\0';
int min=0;
int max=LEN-2;
cout<<ruler<<endl;
for(i=1;i<=DIV;i++);
{
divide(ruler,min,max,i);
cout<<ruler<<endl;
for(int j=1;j<LEN-2;j++)
ruler[j]=' ';
}
return 0;
}
void divide(char ch[],int min,int max,int level)
{
if(level==0)
return;
int mid=(min+max)/2;
ch[mid]='|';
divide(ch,min,mid,level-1);
divide(ch,mid,max,level-1);
}
运行结果如图1,但是书中的运行结果是下面这个图,想了半天也没明白哪里的问题,大家帮忙看下,谢谢。
: