有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。(含代码的详细注释和运行结果截图)

参考代码如下:

//新建一个类,名为Sum,用于输出题目已知分数序列前20项的和

public class Sum{
	
	public static void main(String[] args){
		
		double sumNum = sum(20);	//定义一个变量sumNum,调用sum()方法作为它的初始值
		
		System.out.println("前20项的和为:"+sumNum);	//在控制台输出结果
		
	}
	
	//定义一个方法,用于求和
	
	public static double sum(int num){
		
		if(num == 1){	//如果只有一项,那么直接返回2.0/1.0的结果
			
			return 2.0/1.0;
			
		}else{//否则,按照规律,分母永远是前一个数的分子,只需要调用getMolecule()方法获得分子即可
			
			double a = getMolecule(num);	//a为分子
			
			double b = getMolecule(num-1);	//b为分母
			
			return sum(num-1)+a/b;	//求和结果就是前一个结果加上最后一个分式的和
			
		}
	}
	//定义一个方法getMolecule(),用于获得分子
	
	public static double getMolecule(int num){
		
		if(num == 1){	//如果只有一项,该分数的分子为2.0
			
			return 2.0;
			
		}else if(num == 2){	//如果有两项,该分数的分子为3.0
			
			return 3.0;
				
		}else{
			
			//按照规律,除前两项之外,从第三项开始,它的分子是由前两项的分子之和组成的
			
			return getMolecule(num-1) + getMolecule(num-2);
		}
	}
}

注:在这里我选择的数据类型为double,但是一般情况下不需要如此精确,建议选用float类型,节省资源且快速有效。

运行结果截图如下:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

`柠七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值