首页 > 解决方案 > 在代码中使用递归返回由公式调整的元素的总和

问题描述

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

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

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

标签: javarecursion

解决方案


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

推荐阅读