【发布时间】:2020-11-19 05:15:14
【问题描述】:
我正在尝试编写一个解决日志功能的程序。首先,我只是让它可以计算具有整数答案的日志(例如,log 6 of 36 = 2)。我采用了递归路线,从逻辑上讲,它似乎非常可行,但在尝试实现它时,它不起作用。我没有收到任何语法错误,但正在发生的事情是我收到“未处理的异常”错误,我认为这是因为我采用了递归路线(出于某种原因无限循环?)。希望这是足够的信息来回答,谢谢!
int counter = 1;
void checkifDone(int initial, int base, int exponent);
int main() {
checkifDone(6, 6, 7776);
}
void checkifDone(int initial, int base, int exponent) {
base = initial * base;
counter++;
if (base < exponent) {
checkifDone(initial, base, exponent);
}
else if (base == exponent) {
cout << "Answer is " << counter << endl;
}
else
cout << "not a whole number answer" << endl;
}
【问题讨论】:
-
追踪如果
exponent不是base的力量会发生什么。提示:if(base != exponent)与if(base < exponent)不同。这段代码还有很多不正确的地方,但这会导致无限循环。 -
应该是基数
-
谢谢兄弟 我如何添加注释并突出显示我的代码?我看了帮助页面还是不明白,我该怎么做呢?我还有一个关于我的代码的快速问题。 SO是什么?
-
SO 是 Stack Overflow,我们所在的网站。单个反引号将执行
inline highlighting,尽管作为对您的问题的编辑可能比作为评论更有意义。 -
我一无所知哈哈...好吧,我刚刚编辑了我的代码,它工作得很好,但我对它的效率有疑问。尽管我不是最好的程序员,但我知道全局变量在你的程序中并不是最好的——比如
int counter = 1(或者至少可以避免),我可以在这个特定的程序中轻松避免这样做吗?我一直对这个想法有疑问,希望有建议。再次感谢