在1函数中打印相反的三角递归c ++

时间:2018-02-09 11:42:05

标签: c++ recursion

我想知道是否可以使用1个函数递归打印相反的三角形(“*”)。

例如,

对于给定的基数n = 4 它应该打印

*****
***
**
*
*
**
***
****

我是初学者,但我知道如何为

编写1个递归函数
*****
***
**
*

和一个

*
**
***
****

但是可以在1个函数中编写2个相对的三角形吗? 可能是一个愚蠢的问题,它的答案是否定的 - 但我现在已经尝试了一个小时,我无法做到。 如果你能告诉我是否可能,我将非常感激。

编辑:我的代码有两种不同的功能:

#include <iostream>
using namespace std;

void printOppositeriangle(int n);
void printOppositeriangle2(int n);

void main()
{
    int n = 5;
    printOppositeriangle(n);
    printOppositeriangle2(n);

}
void printOppositeriangle(int n)
{
    if (n == 0)
        return;

    else
    {
        for (int i = 0; i < n; i++)
            cout << "*";
        cout << endl;
        printOppositeriangle(n - 1);
    }
}
void printOppositeriangle2(int n)
{
    if (n == 0)
        return;

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

1 个答案:

答案 0 :(得分:5)

很简单,在打印出一行星号之前和之后,在中间中进行递归调用。

void print(int n)
{
    for (int i = 0; i < n; ++i)
        cout << '*';
    cout << '\n';
    if (n > 1)
        print(n - 1);
    for (int i = 0; i < n; ++i)
        cout << '*';
    cout << '\n';
}

未经测试的代码。