Мне нужна помощь. У меня есть рекурсивная функция в C++, которая просто разбивает строку (все числа) и добавляет символы, чтобы увидеть, если ее сумма меньше 9. Если она не вызывает себя снова до тех пор, пока условие не встретится. Пока все, что работает, до конца, когда мое условие отвечает, вызывает функцию еще раз. Это явно испортит значение переменной, к которой я пытаюсь ее назначить. Я ссылался на многие ссылки, и кажется, что мой синтаксис верен? Любая помощь в том, почему моя функция называет себя в последний раз.C++ рекурсивная функция не выйдет, когда условие встречается
////////////////////////////////////////////// ///////////
int finalNumber =0;
// set finalNumber
finalNumber = sumTotal(sumInput);
int sumTotal(int sumInputToString)
{
stringstream strToInt;
string convertedInt;
strToInt << sumInputToString;
convertedInt= strToInt.str();
int sum = 0;
for(int i = 0; i < convertedInt.length(); i++)
{
sum += (int)convertedInt[i] - 48;
}
if (sum > 9)
{
sumTotal(sum);
}
return sum; //ONCE SUM IS LESS THAN 9,which is what i want,
//MY PROGRAM AUTOMATICALLY JUMPS UP TWO LINES does it one
//more time than it will escape.
}
Я перепробовал все от сдачи моего возвращения в еще {} и обменивать мое, если-то еще условие, чтобы мое возвращение было бы в моем случае. Любая помощь будет принята с благодарностью.
Спасибо.
Как @ahenderson - это делает все это в режиме ожидания. BTW - Старайтесь избегать рекуррентности. Обычно заканчивается в слезах –
Вы говорите, что программа TERMINATES с неправильным значением или просто застряла? Поскольку, если значение меньше 10, то называть его еще раз не следует изменять результат. –