Я пытался научить себя C ++ из книги.Следующий фрагмент кода был проблемой, так как я не могу понять, что я делаю неправильно. Код является примером из книги, и все же он не даст тот же результат.
Предполагается, что функция subdivide () будет использовать метод «разделяй и властвуй» для разделения массива в средней точке и вывода символа «|»там (создавая иллюзию линейки), с последующей печатью средней точки на каждой новой строке.Проблема в том, что окончательная версия содержит только символ «|»в конечных точках во всех строках, и в середине не печатается никаких символов.
Я пытался опубликовать изображение, но, видимо, не могу.
Я буду признателен за любыеПомогите.Вот код C ++:
//using recursion to subdivide a ruler
#include<iostream>
const int len=66;
const int div=6;
void subdivide(char ar[], int min,int max,int level);
int main()
{
using namespace std;
char ruler[len];
int i;
for(int i=1; i<(len-2); i++)
ruler[i]=' ';
ruler[len-1]='\0';
int min=0;
int max=len-2;
ruler[min]=ruler[max]='|';
cout<<ruler<<endl;
for(i=1;i<=div;i++){
subdivide(ruler, min, max, i);
cout<<ruler<<endl;
for(int j=1; j<len-2; j++)
ruler[j]=' ';
}
return 0;
}
void subdivide(char ar[],int low,int high,int level)
{
using namespace std;
if (level==0);
return;
int mid=(high+low)/2;
ar[mid]='|';
subdivide(ar, low, mid, level-1);
subdivide(ar, mid, high, level-1);
}