- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
Improve this question
我需要使用递归函数找到给定整数中相同数字的最大序列。例如:
input: "2221", output: 3
input: "2223333", output: 4
input: "222333", output: 3
由于某种原因,代码有时工作正常,有时不工作。当我输入"1112",然后它给我正确的输出(3),但是当我输入"1111555"时,我期望得到输出4,结果反而得到了6,还有,我不能改变函数接收的参数所以如果有人知道如何将参数插入函数内部而不是外部(如果我把它们插入函数中,那么我收到的输出总是0)我真的很感激帮助,所以提前感谢你:)
我的代码:
int currentLength = 0, maxLength = 0;
int currentDigit = -1;
int maxSequence(int num)
{
if (num <= 0)
return maxLength;
int digit = num % 10;
if (digit == currentDigit) {
maxLength= 1 + maxSequence(num / 10);
}
else {
currentDigit = digit;
if (maxLength > 1)
{
maxLength = 0;
}
else
{
maxLength = 1;
}
return maxSequence(num / 10);
}
}
1条答案
按热度按时间k2fxgqgv1#
递归和可变全局变量是一个讨厌的组合。
您可以将参数添加到其他函数并调用该函数。
大概是这样的
这里有一个没有任何赋值的版本,这样推理起来就稍微容易一些: