五十道编程小题目 --- 20 java

44 篇文章 0 订阅
40 篇文章 2 订阅

【程序20】 
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 
1.程序分析:请抓住分子与分母的变化规律,分子分母都遵循【斐波那契数列】n = (n-1) + (n-2); n>2;






import java.util.Scanner;

public class Test20 {
	
	//斐波那契数列
	public static double fibonacci(int n){
		
		if( n == 1 || n == 2){
			return 1;
		}
		
		return (fibonacci(n-1) + fibonacci(n-2));
	}
	
	public static double sum(int n){
		
		StringBuilder sb = new StringBuilder();
		
		double sum = 0;  //总和
		double a = 0;    
		double b = 0 ;    
		for(int i=3; i<n+2; i++){
			a = fibonacci(i);     //分子(斐波那契数列,第三项为2)
			b = fibonacci(i-1);   //分母(斐波那契数列,第一项和第二项均为1)
			
			sb.append( (int)a + "/" + (int)b + " + ");
			if( i%10 == 0 ){
<span style="white-space:pre">				</span>sb.append("\n");
<span style="white-space:pre">			</span>}
<span style="white-space:pre">			</span>
			sum += a/b ;
		}
		
		sb.insert(0, sum + " = ");
		String s= sb.substring(0,sb.length()-2);
		
		System.out.println(s);
		
		return sum ;
	}
	
	public static void main(String[] args) {
		
		Scanner s = new Scanner(System.in);
		System.out.println("请输入求前几项的和:");
		int n = s.nextInt();
		
		sum(n);
		
	}

}
输出结果:

请输入求前几项的和:
20
31.042226813624282 = 2/1 + 3/2 + 5/3 + 8/5 + 13/8 + 21/13 + 34/21 + 55/34 + 
89/55 + 144/89 + 233/144 + 377/233 + 610/377 + 987/610 + 1597/987 + 2584/1597 + 4181/2584 + 6765/4181 + 
10946/6765 






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值