gpt4 book ai didi

c++ - 尝试仅构建递归 "ruler"(无循环!)时发生堆栈溢出/异常

转载 作者:行者123 更新时间:2023-11-28 03:23:55 25 4
gpt4 key购买 nike

<分区>

我必须只使用递归(没有循环)来设计一个标尺。用户输入标尺长度和刻度线的深度(高度)。我设法使用简单的 for 和 while 循环很好地构建了它,但是当我试图将它转换为递归时,我遇到了一些麻烦。我在运行文件结束时遇到堆栈溢出和第一次机会异常,但是,就在错误杀死它之前,我得到了正确的输出。我一直在使用测试用例长度:4 和深度:5,以及长度:12 和深度:3。

如果有人知道我把递归工作搞砸了多少,我洗耳恭听。

#include <iostream>
#include <string>

using namespace std;
void solve (int, int, int, string, int);

int main()
{
int depth, length;
cout << "Enter a ruler length: ";
cin >> length;
cout << endl << "Enter a marking depth: ";
cin >> depth;

int i = 0;
string ruler = "";
int size = length * pow(2, (depth-1));

solve(length, depth, i, ruler, size);


int x;
cin >> x;

return 0;
}

void solve (int length, int depth, int i, string ruler, int size)
{
if (depth > 0)
{

int inc = pow(2, depth-1);

if (i <= (size))
{
if (i % inc == 0) {
cout << "|";
}

if (i % inc != 0) {
cout << " ";
}

solve (length, depth, ++i, ruler, size);


}
cout << "\n";

}

solve (length, depth-1, 0, ruler, size);
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com