【发布时间】:2018-06-15 14:05:53
【问题描述】:
给定“n”,问题是生成第 n 个 Count 和 Say 序列。 Here是问题描述。
我试图通过递归来解决这个问题:
编辑: 基本上遍历字符串并计算连续的1s、2s(或其他)并将(计数+我们计算的那个数字)(顺便说一下,它是一个字符串)附加到最终要返回的主字符串。 该链接现在有效。
string gofind(int N){
if(N==1) return "1";
else{
string temp = gofind(N-1);
ostringstream str1;
string* t = &(temp);
int count;
string n;
while(*t!="\0"){
count=1;
while(*t==*(t+1)) {
count++;
t++;
}
str1<<count;//basically to convert int to str
string geek = str1.str();
n.append(geek+*t);
t++;
}
return n;
}
}
这会在运行时“bad_alloc”引发异常。这段代码中可能有很多错误。 有人能指出什么吗?什么是正确的递归解决方案。
【问题讨论】:
-
我强烈建议您学习如何使用调试器以及如何调试您的程序。一个好的调试器可以让你逐行检查代码并检查变量的值,这对于推断问题所在非常有帮助
-
看来您将
t视为char *,而不是string *。 -
这不是递归的好用法。您可以迭代,并记住上一行。
-
你给的链接失效了。
-
@Jeffrey 你能详细说明原因吗?我认为这有点类似于阶乘问题,所以我采用了这种方法。