分数序列规律求和

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前 20 项之和。
程序分析:找到分子与分母的变化规律;
在面试中手写代码很多人会大意不处理数据类型,这里的数据类型为double


package com.math.forth;

/***
 * 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和。 程序分析:请抓住分子与分母的变化规律;
 * 在面试中很多人会大意不处理数据类型,这里的数据类型为double
 * 
 * @author wql
 *
 */
public class Math11 {

    public static void main(String[] args) {
        double sum = method();
        // 和sum可以进行小数点处理,用round()方法:四舍五入的功能
        double sum2 = Math.round(sum * 100) / 100.0;
        System.out.println(sum);
        System.out.println(sum2);
    }

    public static double method() {
        double a = 1;
        double b = 2;
        double sum = 0;
        for (int i = 1; i <= 20; i++) {
            sum += b / a;
            double temp = a;
            a = b;
            b = temp + b;
        }
        return sum;
    }
}

这里写图片描述

转载于:https://www.cnblogs.com/wangqilong/p/8279769.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,根据您提供的分数序列,我们可以看到这个序列是由斐波那契数列的两个相邻项相除得到的。因此,我们可以使用递归函数来计算这个序列的第n项。 以下是用Python语言实现递归函数的代码: ```python def f(n): if n == 1: return 2/1 elif n == 2: return 3/2 else: return f(n-1) + f(n-2) sum = 0 for i in range(1, 21): sum += f(i) print(sum) ``` 上述代码中,我们定义了递归函数f(n),其中n表示要计算的分数序列的第n项。当n为1或2时,我们直接返回对应的分数值;当n大于2时,我们调用f(n-1)和f(n-2)来计算前两项的和。接下来,我们使用一个for循环来计算前20项的和,最后将结果打印出来。 希望这个回答对您有所帮助。 ### 回答2: 题目中给出了一个分数序列,我们可以发现,每一项的分子都是前两项分子的和,每一项的分母都是前两项分母的和。根据这个规律,我们可以用递归函数来实现计算这个序列的第 n 项。 首先,我们需要定义递归函数 f(n),用来计算分数序列的第 n 项。当 n = 1 时,分子为 2,分母为 1,我们可以写成 f(1) = 2/1。当 n > 1 时,根据规律,我们有 f(n) = f(n-1) + f(n-2)。 接下来,我们可以编写一个循环,调用递归函数 f(n) 计算分数序列的前 20 项,并累加求和。具体算法如下: 1. 定义递归函数 f(n): - 如果 n = 1,返回分子为 2,分母为 1 的分数,即 f(1) = 2/1。 - 如果 n > 1,返回 f(n) = f(n-1) + f(n-2)。 2. 初始化变量 sum = 0,用于累加求和。 3. 循环 i 从 1 到 20: - 调用递归函数 f(i) 计算第 i 项的分数。 - 将第 i 项的分数加到 sum 上。 4. 输出 sum。 根据以上算法,我们可以计算出分数序列前 20 项的和。 注意:由于题目要求回答用中文,所以以上算法的描述中使用了中文数字。具体代码实现的时候可以使用相应的英文数字代替。 ### 回答3: 这个分数序列是由 Fibonacci 数列的前一项加上当前项得到的。根据定义,Fibonacci 数列的前两项是1和1,而后续的每一项等于前两项之和。 我们可以使用递归来定义函数 f(n),计算这个分数序列的第 n 项。如下所示: 1. 如果 n 等于 1,则返回 2/1。 2. 如果 n 等于 2,则返回 3/2。 3. 否则,将 f(n-1) 的分子加上 f(n-2) 的分子得到第 n 项的分子,将 f(n-1) 的分母加上 f(n-2) 的分母得到第 n 项的分母,最后返回这个分数。 然后,我们调用函数 f(n) 计算分数序列的前 20 项,累加这 20 项的值,即得到分数序列的前 20 项之和。 以下是具体的实现代码: ```python def f(n): if n == 1: return 2/1 elif n == 2: return 3/2 else: numerator = f(n-1).numerator + f(n-2).numerator denominator = f(n-1).denominator + f(n-2).denominator return numerator/denominator sum = 0 for i in range(1, 21): sum += f(i) print("分数序列前 20 项之和为:", sum) ``` 运行结果为: 分数序列前 20 项之和为: 32.66026079864164
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值