下面的代码做了我想要的,但我需要它,使得三角形函数只需要一个参数,即maxrow。我认为函数可能需要从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);
}
答案 0 :(得分:0)
创建一个辅助函数并调用它:
void triangle_helper(int maxrow) {
triangle(maxrow, 0);
}
您可以进一步将triangle_helper
重命名为triangle
,将triangle
重命名为triangle_impl
,和/或将其放入某个私有命名空间。