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

时间:2019-05-06 17:52:46

标签: java recursion

这里我们有一个用于序列元素的公式:F [i] = 2 * F [i-1]-cos(i),F [1] = 1。 在任务中,我应该使用递归计算序列中N个元素的总和。我可以返回n-idexed元素:

public double recursion(int n) {
    if (n == 1) 
        return 1;
    else 
        return (2 * recursion(n - 1) - Math.cos(n));    
} 

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

1 个答案:

答案 0 :(得分:1)

您首先应该编写一个称为f的方法来计算函数F [n],您已在此处完成了该方法。您应该将recursion方法重命名为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)

public static double fsum(int n) {
    if (n == 1) return 1;
    return f(n) + fsum(n - 1);
}