/*
2017年3月7日15:45:20
java基础50道经典练习题 例20
Athor: ZJY
Purpose:
【程序20】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...
求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。
*/
import java.util.Scanner;
public class ProgramNo20_1
{
public static void main(String[] args)
{
System.out.print("请输入n的值: ");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
double sum = 0;
for (int i=1; i<=n; i++) {
sum += (float)(moleculeRecursion(i)/denominatorRecursion(i));
//System.out.print((moleculeRecursion(i)+"/"+denominatorRecursion(i)));
//if (i != n)
//System.out.print(" + ");
}
System.out.print("前"+n+"项的和是: "+sum);
}
private static double moleculeRecursion(int n)
{
double molecule = 0;
if(1 == n)
molecule = 2;
else if(2 == n)
molecule = 3;
else
molecule = moleculeRecursion(n-1) + moleculeRecursion(n-2);
return molecule;
}
private static double denominatorRecursion(int n)
{
double denominator = 0;
if(1 == n)
denominator = 1;
else if(2 == n)
denominator = 2;
else
denominator = denominatorRecursion(n-1) + denominatorRecursion(n-2);
return denominator;
}
}
/*
2017年3月7日15:45:20
java基础50道经典练习题 例20
Athor: ZJY
Purpose:
*/
public class ProgramNo20_2
{
public static void main(String[] args){
double n1 = 1;
double n2 = 1;
double fraction = n1/n2;
double Sn = 0;
for(int i=0; i<20; i++){
double t1 = n1;
double t2 = n2;
n1 = t1+t2;
n2 = t1;
fraction = n1/n2;
Sn += fraction;
}
System.out.print(Sn);
}
}