c++ - C++中的打印相反三角形函数

标签 c++ c++11 recursion c++14

我们的任务是编写一个可以打印如下内容的递归:

* * * *
* * *
* *
*
*
* *
* * *
* * * *

我编写了代码,希望获得正确的图形。但是,我得到了:
* * * *
*
* *
* * *
* * * *

我不知道为什么。我以为每次我的代码调用printOppositeTriangles(n-1)时,在调用下一个printOppositeTriangles(n-1)之前,都需要遍历所有内容,包括for循环(带有j的循环)。有人可以告诉我为什么吗?谢谢!
void printOpositeTriangles(int n){
    using namespace std;
    if (n==1){
        cout<<"*"<<endl;
    } else {
        for (int j=1;j<=n;j++){
            cout<<"*";
        }
        cout<<endl;
        printTriangle(n-1);
        for (int i=1;i<=n;i++){
            cout<<"*";
        }
        cout<<endl;
    }
}

最佳答案

您的代码中存在一个大问题:您需要在printOppositeTriangles中进行递归调用。您正在调用功能名称不同的打印三角形
作为printOppositeTriangles。这是递归的主要思想,在您的示例中不存在。
试试这个

void printLine(unsigned int n)
{
    if (n == 1){
        std::cout << "*" << std::endl;
    }
    else{
        for (unsigned int j = 1; j <= n; j++){
            std::cout << "*";
        }
        std::cout << '\n';

        printLine(n - 1);

        for (unsigned int j = 1; j <= n; j++){
            std::cout << "*";
        }
        std::cout << '\n';
    }
}

关于c++ - C++中的打印相反三角形函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62367656/

相关文章:

c++ - std::make_shared、std::unique_ptr 和移动构造函数

.net - Mono 下的堆栈大小

haskell - 在没有输入变量的情况下在 Haskell 中实现递归

c++ - 无法理解复制构造函数从何而来

C++ 显示错误的对象

c++ - std::shuffle 的使用和效用?

java - 如何停止递归?

c++ - 使用一个可选参数获取两个参数到 main

c++ - 在没有捕获列表的情况下访问 lambda 中的变量

c++ - 等效于范围枚举的 "using namespace X"?