Java 在代码中使用递归返回由公式调整的元素之和

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)); } 但我不知道如何计算这些元素的总和。我应该如何组织这个过

这里我们有一个序列元素的公式: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));    
} 

但我不知道如何计算这些元素的总和。我应该如何组织这个过程?

您应该首先编写一个名为
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);
}