gpt4 book ai didi

java - 使递归函数迭代

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:08 25 4
gpt4 key购买 nike

作业:根据以下公式计算an:

  • a0 = 1
  • a1 = 3
  • a2 = 5
  • an = an-1 * a2n-2 * a3 n-3

我在使函数迭代时遇到问题。我想出了如何递归地做到这一点。我将如何专门针对此任务以及一般情况下执行此操作?

我的递归代码:

public static BigInteger recurs(int bigInteger){
BigInteger sum;

if (bigInteger == 0) {
sum = new BigInteger(String.valueOf("1"));
} else if (bigInteger == 1) {
sum = new BigInteger(String.valueOf("3"));
} else if (bigInteger == 2) {
sum = new BigInteger(String.valueOf("5"));
} else {
sum = recurs(bigInteger-1).multiply(recurs(bigInteger-2).pow(2).multiply(recurs(bigInteger-3).pow(3)));
}

return sum;

}

最佳答案

您需要记住最后三个值,并根据最后一个值每次计算一个新值。

public static BigInteger iter(int n) {
BigInteger a = BigInteger.valueOf(1);
BigInteger b = BigInteger.valueOf(3);
BigInteger c = BigInteger.valueOf(5);
switch (n) {
case 0: return a;
case 1: return b;
case 2: return c;
default:
for (int i = 2; i < n; i++) {
BigInteger next = c.multiply(b.pow(2)).multiply(a.pow(3));
a = b;
b = c;
c = next;
}
return c;
}
}

注意这是 O(n) 而不是 O(n^3)

关于java - 使递归函数迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53068958/

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