Хорошо, я просто не могу понять эту проблему. Я должен распечатать треугольник любого размера в символах, вводя две буквы. Пример: диапазон (c, j), и он должен быть рекурсивным. У меня не может быть никаких циклов в моем коде. Вывод должен выглядеть так:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
И так далее … Итак, если вы заметили, он печатает вперед, пока не доберется до самой новой буквы, а затем печатает назад. Любые предложения о том, как это сделать, с благодарностью.
РЕДАКТИРОВАТЬ: Я не пытаюсь обмануть. Я полностью застрял в том, как подойти к этому, поэтому я прошу предложения по этому вопросу, а не для того, чтобы кто-то дал мне код для всей программы. Благодарю.
Решение aardvarkk является лучшим, но если вам нужна версия только с одной функцией:
#include <iostream>
using namespace std;void recursivePrintLettersTriangle (char start, char end, char current, int space, bool newLine) {
// Print spaces
if ((current + space) < end) {
std::cout << ' ';
recursivePrintLettersTriangle(start, end, current, space + 1, newLine);
// Print letters
} else if (start <= current) {
std::cout << start;
if (start < current) {
recursivePrintLettersTriangle(start + 1, end, current, space, false);
std::cout << start;
}
// Go to next line
if (newLine) {
std::cout << std::endl;
if (current < end) {
recursivePrintLettersTriangle(start, end, current + 1, 0, newLine);
}
}
}
}
void showLettersTriangle (char start, char end) {
recursivePrintLettersTriangle(start, end, start, 0, true);
}
int main() {
showLettersTriangle('a', 'g');
return 0;
}
Это поможет вам. Попробуй здесь.
#include <iostream>
using namespace std;
void spaces(char space) {
if (space <= 0) {
return;
}
std::cout << " ";
spaces(space-1);
}
void line(char start, char end, char space) {
if (start != end) {
std::cout << start;
line(start+1, end, space-1);
std::cout << start;
} else {
std::cout << end;
}
}
void countdown(char start, char end, char space) {
++space;
if (start != end) {
countdown(start, end-1, space);
}
spaces(space);
line(start, end, space);
spaces(space);
std::cout << std::endl;
}
void range(char start, char end) {
countdown(start, end, 0);
}
int main() {
range('a', 'g');
return 0;
}