java - 在代码中使用递归返回由公式调整的元素的总和
问题描述
这里我们有一个序列元素的公式: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));
}
但我不知道如何计算这些元素的总和。我应该如何组织这个过程?
解决方案
您应该首先编写一个称为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);
}
推荐阅读
- python - 从 VBA 运行 Python 脚本,检查“RetVal = Shell”命令是否有效
- python - How to write json data into a column based on the value in another column in CSV file python
- apache-spark - 通过更改表列名称的类型来更改表列名称时,无法使用 spark 读取数据
- javascript - 将数组推送到 Postman 中的环境变量
- jquery - If Jquery Kendo popup window closed, Jquery code after "close statement" is not executing
- java - Java,Scanner 只读取前两行,忽略其余行
- python-3.x - 使用 RPI、Pyfirmata 和 Arduino 制作电压表
- parsing - 理解这个在 Haskell 中实现的递归下降解析器
- vue.js - 尽管赋值成功,vue 变量未定义
- sql - 通过多个连接获得正确的总和