用jav代码写出有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和。
时间: 2024-10-12 11:14:31 浏览: 28
CSMA.zip_CSMA-CD JAVA_CSMA/CD_JAV_csma/cd编程Java_java仿真 csma/cd
这是一个著名的斐波那契数列(Fibonacci sequence)的倒置版本,其中分子是斐波那契数列,分母也是斐波那契数列。我们可以用递归的方式来计算每一项,然后累加前20项。
以下是Java代码实现:
```java
public class Main {
static long fib(int n) {
if (n <= 1)
return n;
else
return fib(n - 1) + fib(n - 2);
}
public static void main(String[] args) {
int limit = 20;
double sum = 0;
for (int i = 1; i <= limit; i++) {
// 斐波那契数列的第i项作为分子,第i-1项作为分母
double numerator = fib(i);
// 当分母小于等于当前项时,表示已经到达序列终点,需要回溯
while (fib(i - 1) <= numerator) {
numerator /= fib(i - 1);
i--;
}
sum += numerator;
}
System.out.println("前20项之和为:" + sum);
}
}
```
注意:由于斐波那契数列增长迅速,直接计算可能会导致栈溢出或者数值溢出。上面的代码通过优化了计算过程,避免了不必要的递归,但是实际运行时仍需谨慎处理大数运算。
阅读全文