用递归C++打印等边三角形A- Z

用递归C++打印等边三角形A- Z,c++,recursion,geometry,pascals-triangle,C++,Recursion,Geometry,Pascals Triangle,好吧,我就是想不出这个问题。我必须用两个字母打印出任意大小的三角形。例如:range c,j,它必须是递归的。我的代码中不能有任何循环。输出应该如下所示: A ABA ABCBA ABCDCBA ABCDEDCBA ABCDEFEDCBA ABCDEFGFEDCBA 等等。。。所以,如果你注意到,它会向前打印,直到找到最新的字母,然后向后打印。任何关于如何做到这一点的建议都将不胜感激 编辑:我不是想作弊。我完全

好吧,我就是想不出这个问题。我必须用两个字母打印出任意大小的三角形。例如:range c,j,它必须是递归的。我的代码中不能有任何循环。输出应该如下所示:

         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;
}