所以我一直试图弄清楚为什么这不起作用。基本上我试图编写一个递归函数,它将在控制台中显示一个漂亮的文本金字塔。
用户先输入高度,然后输入用于创建金字塔的符号,此处调用该函数:
//_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。
我现在还不确定......
答案 0 :(得分:2)
简单:你从来没有打过基础案例。你有无限的递归,因为在_height--
循环的每次迭代之后 之前评估{em> 。考虑for
。
答案 1 :(得分:0)
你可以递归地做任何事情,你也可以迭代地做。迭代不会导致堆栈溢出,如递归可能。尝试使用迭代重新编写它。