五十道编程小题目 --- 20 java
2016-08-25 21:15
423 查看
【程序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
题目:有一分数序列: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
相关文章推荐
- 五十道编程小题目 --- 04 正整数分解质因数 java
- 五十道编程小题目 --- 10 反弹的小球 java
- 五十道编程小题目 --- 28 八大排序算法 java 之 04堆排序
- 五十道编程小题目 --- 37 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子 java
- 五十道编程小题目 --- 28 八大排序算法 java 之 07归并排序
- 五十道编程小题目 --- 06 最大公约数和最小公倍数 java
- 五十道编程小题目 --- 25 回文数 java
- 五十道编程小题目 --- 28 八大排序算法 java 之 06快速排序
- 五十道编程小题目 --- 28 八大排序算法 java 之 01直接插入排序
- 五十道编程小题目 --- 33 杨辉三角 java
- 五十道编程小题目 --- 08 求s=a+aa+aaa+aaaa+aa...a的值 java
- 五十道编程小题目 --- 19 打印菱形 java
- 五十道编程小题目 --- 12 企业发放的奖金根据利润提成 java
- 五十道编程小题目 --- 28 八大排序算法 java 之 05冒泡排序
- 五十道编程小题目 --- 02 找素数(质数)java
- 五十道编程小题目 --- 09 完数 java
- 五十道编程小题目 --- 14 java
- 五十道编程小题目 --- 17 猴子吃桃子问题 java
- 五十道编程小题目 --- 29 java
- 五十道编程小题目 --- 30 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 java