编写一个java应用程序,求分数序列1/2,2/3,3/5,5/8,8/13,13/21,…的前10项之和。

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:36:12

我用一个最低级的方式实现了,希望可以抛砖引玉:

先讲一下我的思路:
不难发现这个数列的规律,第一个数的分子加第二个数的分子等于第三个数的分子,第一个数的分母加第二个分母等于第三个数的分母,后面的依次类推。

根据这个规律就可以很容易地得到数列中的第N个数;

剩下的问题就是求和。

如果只是简单的让计算机求一个和是不用动什么脑筋的,直接一个一个累加起来就可以了。但这样做的结果就是得不到最后的精确的结果。所以我这里求得的最后的和还是一个完整的分数,而不是以小数形式出现的。

那么利用义务教育所学的知识就知道,两个分数的和的分母,等于两个分数的分母的乘积,和的分子等于第一个分子乘以第二个分母,加上第一个分母乘以第二个分子。所以程序中有如下语句:

long[] rets = getSub(num1 * den2 + num2 * den1, den1 * den2);

getSub()方法求得的结果是约分之后的一个分数。具体的情况可以看程序中的注释。

于是在一个循环中,一边求得数列中的下一个分数,一边用这个语句累加到和,最后就可以得到想要的结果。
======================
package com.yydragon.ltjavatest.testmainfirst;

/**
* 编写一个java应用程序,求分数序列1/2,2/3,3/5,5/8,8/13,13/21,… 的前10项之和。
*
* @author Will
*
*/
public class TestClassTwo {
public static void main(String[] args) {
long num1 = 1; // 第一个分数的分子
long den1 = 2; // 第一个分数的分母
long num2 = 2; // 第一个分数的分子
long den2 = 3; //