Как обязательное предисловие, я новичок в C и, скорее всего, просто упускаю что-то чрезвычайно очевидное. Я ценю любое время и усилия, затраченные на то, чтобы разобраться в моей глупой проблеме.
У меня есть рекурсивная функция, цель которой - распечатать большой «x» из меньших символов x, где width - длина каждой стороны x. Например, ширина «3» будет иметь следующий вывод:
Shape:
X X
X
X X
Returning.
Где "Возвращение". печатает перед возвратом на главную.
Следующая функция делает это только для ширины 1 и 3, но не справляется с 5, 7, 9 и т. Д.
void Recurse(int left, int right, int flag, int num){
int i;
if(((left && right) == num/2) && (flag == 0)){
for(i=0;i<num;i++){
if (i == (num/2) ){
printf("X");
}
else
printf(" ");
}
printf("\n");
flag = 1;
Recurse(left-1, right+1, flag, num);
}
else if(flag == 0){
for(i=0;i<num;i++){
if((i == left) || (i == right)){
printf("X");
}
else
printf(" ");
}
printf("\n");
Recurse(left+1, right-1, flag, num);
}
else if(flag == 1){
for(i=0;i<num;i++){
if((i == left) || (i == right)){
printf("X");
}
else
printf(" ");
}
printf("\n");
if (((left == 0) && (right == num-1)) && (flag == 1))
printf("\nReturning.\n");
return;
Recurse(left-1, right+1, flag, num);
}
}
Единственное, что у меня есть в моей основной функции - это инициализация width с некоторым нечетным int и вызов функции. Я хотел бы получить код на самом деле ... печать правильно, прежде чем немного очистить логику. Спасибо за предоставленную помощь.