Java 在代码中使用递归返回由公式调整的元素之和
这里我们有一个序列元素的公式:F[i]=2*F[i-1]-cos(i),F[1]=1。 在任务中,我应该使用递归计算序列中N个元素的总和。我可以返回n-idex元素:Java 在代码中使用递归返回由公式调整的元素之和,java,recursion,Java,Recursion,这里我们有一个序列元素的公式:F[i]=2*F[i-1]-cos(i),F[1]=1。 在任务中,我应该使用递归计算序列中N个元素的总和。我可以返回n-idex元素: public double recursion(int n) { if (n == 1) return 1; else return (2 * recursion(n - 1) - Math.cos(n)); } 但我不知道如何计算这些元素的总和。我应该如何组织这个过
public double recursion(int n) {
if (n == 1)
return 1;
else
return (2 * recursion(n - 1) - Math.cos(n));
}
但我不知道如何计算这些元素的总和。我应该如何组织这个过程?您应该首先编写一个名为
f
的方法来计算函数f[n],您在这里已经完成了。您应该将递归
方法重命名为f
private static double f(int n) {
if (n == 1)
return 1;
else
return (2 * f(n - 1) - Math.cos(n));
}
然后,编写另一个名为fsum
的递归方法来计算f(n)+f(n-1)+…+f(1)
当然,基本情况是1。当n
为1时,fsum
也应返回1,因为f(1)为1
否则,返回f(n)+其余f的总和。剩下的f的和是多少<代码>fsum(n-1)
例如,您可以在每个步骤的累积值中添加一个参数……此外,在这里使用记忆也很好,因为您在这里多次对相同的
n
重新计算f
。
public static double fsum(int n) {
if (n == 1) return 1;
return f(n) + fsum(n - 1);
}