使用递归C++打印等边三角形A-Z
Printing Equilateral Triangle A-Z Using Recursion C++
好吧,我就是想不通这个问题。我必须用输入两个字母的字符打印出任意大小的三角形。例如:range(c,j),它必须是递归的。我的代码中不能有任何循环。输出应该是这样的:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
等等…所以,如果你注意到,它会向前打印,直到找到最新的字母,然后向后打印。任何关于如何做到这一点的建议都将不胜感激。
编辑:我不是想作弊。我完全被困在如何处理这个问题上,所以我在征求建议,而不是让别人给我整个程序的代码。谢谢
土豚的解决方案是最好的,但如果你想要一个只有一个功能的版本:
#include <iostream>
using namespace std;
void recursivePrintLettersTriangle (char start, char end, char current, int space, bool newLine) {
// Print spaces
if ((current + space) < end) {
std::cout << ' ';
recursivePrintLettersTriangle(start, end, current, space + 1, newLine);
// Print letters
} else if (start <= current) {
std::cout << start;
if (start < current) {
recursivePrintLettersTriangle(start + 1, end, current, space, false);
std::cout << start;
}
// Go to next line
if (newLine) {
std::cout << std::endl;
if (current < end) {
recursivePrintLettersTriangle(start, end, current + 1, 0, newLine);
}
}
}
}
void showLettersTriangle (char start, char end) {
recursivePrintLettersTriangle(start, end, start, 0, true);
}
int main() {
showLettersTriangle('a', 'g');
return 0;
}
这将对您有所帮助。在这里试试。
#include <iostream>
using namespace std;
void spaces(char space) {
if (space <= 0) {
return;
}
std::cout << " ";
spaces(space-1);
}
void line(char start, char end, char space) {
if (start != end) {
std::cout << start;
line(start+1, end, space-1);
std::cout << start;
} else {
std::cout << end;
}
}
void countdown(char start, char end, char space) {
++space;
if (start != end) {
countdown(start, end-1, space);
}
spaces(space);
line(start, end, space);
spaces(space);
std::cout << std::endl;
}
void range(char start, char end) {
countdown(start, end, 0);
}
int main() {
range('a', 'g');
return 0;
}
相关文章:
- 如何使用默认参数等选择模板专业化
- 在Linux中哪里可以找到互斥、未来等的源代码
- 绘制旋转的三角形
- 等<thing>效于char32_t
- 如何用for循环在c++中生成单词三角形
- 具有非整数边容量的最大流量的Dinic算法
- 用C++程序计算圆锥体的体积、球体的体积、八边形的面积和两点之间的距离
- 如何使用递归打印修改后的星号三角形图案
- 确定三个边长是否形成钝三角形 c++
- 计算从德劳内三角测量获得的三角形的边长
- 重建三角形网格中的所有边
- 如何累积三维三角形网格的边?用c语言计算网格边的算法
- 三角形,有时是等边的,有时不是
- 全等、相似性和直角三角形
- 确定给定数字 N 是否可以成为具有所有 3 个积分边的直角三角形的斜边的算法
- 生成三角形边的代码
- 使用递归C++打印等边三角形A-Z
- 三角形三角形重叠(但不是边)
- 在DirectX中围绕质心旋转一个等边三角形
- 求两个全等三角形之间的旋转