用js实现有一个序列:1,2,3,5,8,13...。请找出第20个数是多少?并计算前20个数之和是多少?
时间: 2024-05-12 08:20:08 浏览: 60
解题思路:
1. 用数组存储序列中的数;
2. 用循环计算出第20个数,并累加前20个数的和。
实现代码如下:
```js
// 初始化序列的前两个数
var arr = [1, 2];
var sum = 3; // 前两个数的和为3
// 循环计算序列中的数
for (var i = 2; i < 20; i++) {
var num = arr[i-1] + arr[i-2]; // 计算当前数
arr.push(num); // 将当前数加入数组
sum += num; // 累加前20个数的和
}
console.log("第20个数是:" + arr[19]);
console.log("前20个数的和是:" + sum);
```
输出结果为:
```
第20个数是:10946
前20个数的和是:46367
```
相关问题
有一个序列:1,2,3,5,8,13……。请用js完成找出第20个数是多少,并计算前20个数之和是多少
代码如下:
```javascript
// 计算第n个斐波那契数列的值
function fibonacci(n) {
if (n <= 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
// 计算前n个斐波那契数列的和
function fibonacciSum(n) {
let sum = 0;
for (let i = 1; i <= n; i++) {
sum += fibonacci(i);
}
return sum;
}
console.log(fibonacci(20)); // 输出第20个数的值
console.log(fibonacciSum(20)); // 输出前20个数的和
```
输出结果:
```
6765
17710
```
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...用Java求出这个数列的前 20 项之和。
这种分数序列看起来像是斐波那契数列(Fibonacci sequence)的倒序,并且分子是第n个斐波那契数,分母是第n-1个斐波那契数。为了求出前20项的和,我们可以编写一个简单的Java程序利用递推的方式计算斐波那契数并计算其对应的倒序分数。
首先,我们需要一个函数来计算斐波那契数列:
```java
public long fibonacci(int n) {
if (n <= 1) return n;
return fibonacci(n - 2);
}
```
然后,我们可以构建一个列表来存储分数,以及一个变量来跟踪总和:
```java
List<Double> fractions = new ArrayList<>();
long sum = 0;
for (int i = 0; i < 20; i++) {
long numerator = fibonacci(i + 1);
long denominator = fibonacci(i);
fractions.add((double)numerator / denominator);
sum += fractions.get(i);
}
```
最后,我们返回总和:
```java
System.out.printf("前20项的和为: %.2f\n", sum);
```
完整代码:
```java
import java.util.ArrayList;
public class FibonacciFractions {
public static void main(String[] args) {
double sum = calculateSum(20);
System.out.printf("前20项的和为: %.2f\n", sum);
}
public static double calculateSum(int n) {
List<Double> fractions = new ArrayList<>();
long fibNum1 = 1, fibNum2 = 1, nextFib = 1;
for (int i = 0; i < n; i++, nextFib = fibNum1 + fibNum2) {
fractions.add((double)nextFib / fibNum2);
fibNum1 = fibNum2;
fibNum2 = nextFib;
}
return fractions.stream().mapToDouble(Double::doubleValue).sum();
}
}
```
注意:由于斐波那契数增长很快,对于大的n值,可能会导致数值溢出。你可以考虑使用大数库如BigInteger来避免这个问题。