gpt4 book ai didi

java - 使用 BigInteger 进行尾递归乘法

转载 作者:行者123 更新时间:2023-12-01 13:05:05 25 4
gpt4 key购买 nike

我正在尝试修改我的乘法加法函数以合并两件事:-

(1) 尾递归(2) 大整数

但是,对于大整数我仍然很挣扎,因为我遇到了堆栈溢出。我什至尝试使用 -Xss 开关来扩展堆栈来运行我的程序,但仍然没有成功。我觉得我的方法有问题。感谢任何建议。

<!-- language-all: lang-java -->
public static BigInteger multiRecursive(int multiplicand, int multiplier) {
return multiTailRecursive(multiplicand, multiplier, multiplicand);
}

public static BigInteger multiTailRecursive(int multiplicand, int multiplier, int result){
if (multiplicand == 0 || multiplier == 0) {
return BigInteger.valueOf(0);
}
if (multiplier == 1) {
return BigInteger.valueOf(result);
}

return multiTailRecursive(multiplicand, multiplier - 1, result + multiplicand);
}

最佳答案

此问题已在以下位置讨论过: Stack overflows from deep recursion in Java? :

Increasing the stack size will only serve as a temporary bandage ... what you really want is tail call elimination, and Java does not have this for various reasons.

关于java - 使用 BigInteger 进行尾递归乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com