【问题描述】
栈的应用,利用递归与非递归方示编程实现输出字符金字塔

该回答引用GPTᴼᴾᴱᴺᴬᴵ
下面是使用递归和非递归方法实现输出字符金字塔的C++代码示例:
使用递归方法:
#include <iostream>
using namespace std;
// 输出n层字符金字塔
void printPyramid(int n, char ch) {
if (n <= 0) {
return;
}
// 输出n-1层字符金字塔
printPyramid(n-1, ch);
// 输出第n层
for (int i = 0; i < 2*n-1; i++) {
cout << ch;
}
cout << endl;
}
int main() {
int n = 4;
char ch = 'a';
printPyramid(n, ch);
return 0;
}
使用非递归方法:
#include <iostream>
#include <stack>
using namespace std;
// 输出n层字符金字塔
void printPyramid(int n, char ch) {
stack<int> s;
// 先输出空格
for (int i = n-1; i >= 0; i--) {
for (int j = 0; j < i; j++) {
cout << " ";
}
// 压入字符
for (int j = 0; j < 2*(n-i)-1; j++) {
s.push(ch);
}
// 依次输出栈中的字符
while (!s.empty()) {
cout << s.top();
s.pop();
}
cout << endl;
}
}
int main() {
int n = 4;
char ch = 'a';
printPyramid(n, ch);
return 0;
}
这里使用了一个栈来存储每一层的字符,先将字符压入栈中,然后依次输出栈中的字符,再换行输出下一层的字符。