C ++ - 使用递归函数创建金字塔时出错

时间:2012-03-27 23:55:18

标签: c++ function recursion

所以我一直试图弄清楚为什么这不起作用。基本上我试图编写一个递归函数,它将在控制台中显示一个漂亮的文本金字塔。

用户先输入高度,然后输入用于创建金字塔的符号,此处调用该函数:

//_pyramidHeight is 10
//The second int is to specify the beginning width, which should be the point at the top.    
pyramidLine(_pyramidHeight, 1);

我创建的功能在这里:

void pyramidLine (int _height, int _width)
{
    for (; _height > 0; _height--, _width + 2)
    {
        cout << setfill (' ') << setw(_height - 1);
        cout << setfill (_pyramidBase) << setw(_width);

        pyramidLine (_height, _width);
    }

    return;
}

给出的错误是:Kevin_CIS121.exe中0x00c823e9处的未处理异常:0xC00000FD:堆栈溢出 一旦它到达for循环的第一个cout。

我现在还不确定......

2 个答案:

答案 0 :(得分:2)

简单:你从来没有打过基础案例。你有无限的递归,因为在_height--循环的每次迭代之后 之前评估{em> 。考虑for

答案 1 :(得分:0)

你可以递归地做任何事情,你也可以迭代地做。迭代不会导致堆栈溢出,如递归可能。尝试使用迭代重新编写它。