【发布时间】:2012-05-04 11:40:47
【问题描述】:
我需要一些帮助。我有一个递归函数,在 c++ 中,它只是分解一个字符串(所有数字)并将字符相加,看看它的总数是否小于 9。如果不是,它会再次调用自己,直到满足条件。到目前为止,它一直在工作,直到满足我的条件时它再次调用该函数。这显然会弄乱我试图分配给它的变量的值。我参考了很多参考资料,看来我的语法是正确的?关于为什么我的函数最后一次调用它的任何帮助。
/////////////////////////////////////// //////////
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.
}
我已经尝试了一切,从将我的回报放入 else{} 并交换我的 if else 条件,以便我的回报将在我的 if 中。任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
作为@ahenderson - 这使得整个事情处于失控模式。顺便说一句 - 尽量避免回避。通常以泪水告终
-
您是说程序以错误的值终止还是卡住了?因为如果值小于 10,那么再调用一次应该不会改变结果。