用递归C++打印等边三角形A- Z
好吧,我就是想不出这个问题。我必须用两个字母打印出任意大小的三角形。例如:range c,j,它必须是递归的。我的代码中不能有任何循环。输出应该如下所示:用递归C++打印等边三角形A- Z,c++,recursion,geometry,pascals-triangle,C++,Recursion,Geometry,Pascals Triangle,好吧,我就是想不出这个问题。我必须用两个字母打印出任意大小的三角形。例如:range c,j,它必须是递归的。我的代码中不能有任何循环。输出应该如下所示: A ABA ABCBA ABCDCBA ABCDEDCBA ABCDEFEDCBA ABCDEFGFEDCBA 等等。。。所以,如果你注意到,它会向前打印,直到找到最新的字母,然后向后打印。任何关于如何做到这一点的建议都将不胜感激 编辑:我不是想作弊。我完全
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
等等。。。所以,如果你注意到,它会向前打印,直到找到最新的字母,然后向后打印。任何关于如何做到这一点的建议都将不胜感激
编辑:我不是想作弊。我完全被困在如何实现这一点上,所以我在征求关于这一点的建议,而不是有人给我整个程序的代码。谢谢。这会对你有所帮助
aardvarkk的解决方案是最好的,但是如果您想要一个只有一个功能的版本:
#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;
}
这不是一个作弊的网站。@Isabat三角形图像的范围是多少?A-G?我不是想在作业上作弊。我征求建议,因为我完全被困在如何处理这个问题上。我只是想做一个a-Z范围,但它可以是任何大小。嗯,我想整个事情将只是一个递归函数。但我看到你有递归的空间,用一个函数就可以做到。我不够聪明,不能胜任这样的任务:好吧,谢谢你给了我一个方向,而不是像这个网站上的一些人那样做一个混蛋:。。。就像他们投票否决我和发表尖刻的评论一样。@lisabits是的,这个网站可能有点难。一般来说,这里的人们希望确保每个人都在努力,而不是要求为他们解决问题。很多时候这是有道理的,但很多人认为这是过分的。无论如何,我希望你能从我的答案中有所收获,并用它来提高你的编程技能!是的,我不打算使用一个函数,因为它比我想象的要多,而且我在这方面还是新手。只要有一个严厉的老师。谢谢你的回答!
#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;
}