您的位置:首页 > 编程语言 > Java开发

JAVA之经典算法三

2017-11-28 11:00 381 查看
程序1:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

1.程序分析:请抓住分子与分母的变化规律。

public class Demo11 {
public static void main(String args[]){
float fm = 1.0f;
float fz = 1.0f;
float temp;
float sum = 0f;
for (int i = 0; i < 20; i++) {
temp = fm;
fm = fz;
fz = fz + temp;
System.out.println((int) fz + "/" + (int) fm);
sum += fz / fm;
}
System.out.println(sum);
}
}

调试结果:
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
17711/10946
32.660263


程序2:求1+2!+3!+…+20!的和。

1.程序分析:此程序只是把累加变成了累乘。

public class Demo12 {
public static void main(String args[]){
long sum = 0;
long fac = 1;
for (int i = 1; i <= 20; i++) {
fac = fac * i;
sum += fac;
}
System.out.println(sum);
}
}

调试结果:
2561327494111820313


程序3:利用递归方法求5!。

1.程序分析:递归公式:f(n)=f(n-1)*4!

public class Demo13 {
public static void main(String args[]){
System.out.println("请输入一个数:");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.println(n + "的阶乘为:" + fac(n));
}

public static long fac(int n) {
long value = 0;
if (n == 1 || n == 0) {
value = 1;
} else if (n > 1) {
value = n * fac(n - 1);
}
return value;
}
}

调试结果:
请输入一个数:
5
5的阶乘为:120


程序4:打印出杨辉三角形(要求打印出10行如下图)

1.程序分析:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

public class Demo14 {
public static void main(String args[]) {
int i, j;
int a[][];
int n = 10;
a = new int

;
for (i = 0; i < n; i++) {
a[i][i] = 1;
a[i][0] = 1;
}
for (i = 2; i < n; i++) {
for (j = 1; j <= i - 1; j++) {
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
for (i = 0; i < n; i++) {
for (j = 0; j <= i; j++) {
System.out.printf(a[i][j] + "\t");
}
System.out.println();
}
}
}

调试结果:
1
1   1
1   2   1
1   3   3   1
1   4   6   4   1
1   5   10  10  5   1
1   6   15  20  15  6   1
1   7   21  35  35  21  7   1
1   8   28  56  70  56  28  8   1
1   9   36  84  126 126 84  36  9   1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 算法