首页 > 解决方案 > 在 C++ 中打印星形图案

问题描述

我很难找出如何从一个要求打印整数的问题开始,假设 3,

*
**
*
***
*
**
*

到目前为止我只有

void print(int n)
{
    if (n < 1) {
        return;
    }
    if (n == 1) {
        cout << "*" << endl;
        return;
    }

    print_star(n - 1);
    for (int i = 0; i < n; i++) {
        cout << "*";
    }
    cout << endl;
}

我看到的输出是

*
**
***

我想不出打印该模式的代码。

标签: c++recursion

解决方案


您在打印星星n-1后忘记再次打印外壳。n

例如,对于n = 2,添加此新打印将替换

*
**

经过

*
**
*

对于更高的值相同n

#include    <iostream>

void print_stars (int n) {
    if (n < 1) return;
    if (n == 1) {
        std::cout << '*' << "\n";
    } else {
        print_stars (n-1);
        for (int i = 0; i < n; ++i) std::cout << '*';
        std::cout << "\n";
        print_stars (n-1);
    }
}

int main() {
    print_stars (3);
}

推荐阅读