我想知道是否可以使用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;
}
答案 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';
}
未经测试的代码。