【发布时间】:2014-06-07 16:37:17
【问题描述】:
所以我使用这种递归方法通过递归加法计算两个数字的乘积。我知道大数字溢出堆栈,我的目的是捕获堆栈溢出异常,这样程序就不会崩溃。但是,我不明白为什么输出消息在同一行中显示多次并且 return 0 永远不会从方法中传递出去。返回 0 没那么重要,我不得不有一个 return 语句。但是,我没有取回 0,而是取回了看似随机的大数字。
我希望它只显示一次消息并将我的值传回,或者更好地终止该方法并返回消息。有什么想法吗?
方法如下:
public static long multiplicationRecursive(long num1, long num2) {
try {
if (num2 == 0) {
return 0;
} else {
return num1 + multiplicationRecursive(num1, num2 - 1);
}
} catch (StackOverflowError e) {
System.out.println("Recursion failed");
return 0;
}
}
【问题讨论】:
标签: java recursion exception-handling stack-overflow