Day29---学习Java第三弹
2021-08-08
Java经典编程例题(七)
20、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
package test;
public class test17 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 1;
for (int i = 1; i <= 9; i++) {
sum = (sum + 1) * 2;
}
System.out.println("第一天共摘了" + sum + "个桃子");
}
}
分析:可以用for循环,也可以用方法的递归。
需要注意的点:用for循环时一共循环了九次
21、两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
三队赛手的名单。
package test;
public class test18 {
public static void main(String[] args) {
char a, b, c;
for (a = 'x'; a <= 'z'; a++) {
for (b = 'x'; b <= 'z'; b++) {
for (c = 'x'; c <= 'z'; c++) {
if (a != b && b != c && a != c) { // 避免参赛队员重复比赛
if (a != 'x' && c != 'x' && c != 'z') { // 根据题意判断
System.out.println("a和" + a + ",b和" + b + ",c和" + c + "进行比赛");
}
}
}
}
}
}
}
分析:通过三层for循环历遍所有可能性,通过题意设置判断语句
需要注意的点:在判断之前需要设置if语句排除三个队员重复参赛
22、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
分析:可以看出,除第一项外,下一项的分子等于上一项的分子加上分母,下一项的分母
等于上一项的分子
package test;
public class test20 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int zi = 2, mu = 1;
int temp = 0;
double sum = 0;
for (int i = 0; i < 20; i++) {
sum += zi / mu;
temp = zi;
zi += mu;
mu = temp;
}
System.out.println(sum);
}
}
需要注意的点:对下一项的分子和分母复制时借助临时变量
23、求1+2!+3!+…+20!的和。
分析:写个求阶乘的方法,再在循环中调用即可
package test2;
import java.util.Scanner;
public class tset21 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int x = 20;
long m = 0;
for (int i = 1; i <= x; i++) {
m += di(i);
}
System.out.println(m);
}
public static long di(int x) {
long sum = 1;
for (int i = 1; i <= x; i++) {
sum *= i;
}
return sum;
}
}
需要注意的点:sum和m的值应该用long类型
24、利用递归方法求5!。
package test2; public class test22 { public static void main(String[] args) { // TODO Auto-generated method stub test22 t = new test22(); System.out.println(t.d(5)); } public int d(int x) { if (x == 1) return 1; else return x * d(x - 1); } }
分析:关键是递归的代码
需要注意的点:在截图中用的递归方法不是静态(static)的,所以如果想要使用需要先实例化这个方法所属于的类
明天继续