Следующий код делает то, что я хочу, но он мне нужен, так что функция треугольника принимает только один параметр - maxrow. Я думаю, что функция, вероятно, необходима для обратного отсчета от максимума до тех пор, пока она не станет равной 1, но как начать печать с середины бриллианта меня озадачивает. Как это может быть возможным?Рекурсивно печатать алмаз с одним аргументом
#include <iostream>
#include <string>
void print_row(unsigned int cnt)
{
while(cnt --> 0) std::cout << "* "; // or for loop, I just think --> is cute
std::cout << '\n';
}
void triangle(int maxrow, int row = 0)
{
if (row >= maxrow)
{
print_row(row);
}
else
{
std::cout << std::string(maxrow-row, ' ');
print_row(row);
triangle(maxrow, row+1);
std::cout << std::string(maxrow-row, ' ');
print_row(row);
}
}
int main()
{
std::cout << "Enter total lines: ";
int x;
std::cin >> x;
std::cout << '\n';
triangle(x);
}