Day16---学习Java第三弹
2021-07-26
Java经典编程例题(四)
9、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
public class exp2
{ public static void main(String args[])
{ int i=0; for(i=1;i<=20;i++)
System.out.println(f(i));
}
public static int f(int x)
{ if(x==1 || x==2)
return 1;
else
return f(x-1)+f(x-2);
}
}
或
public class exp2{
public static void main(String args[])
{ int i=0;
math mymath = new math();
for(i=1;i<=20;i++)
System.out.println(mymath.f(i));
}
}class math
{ public int f(int x)
{ if(x==1 || x==2)
return 1; else
return f(x-1)+f(x-2);
}
}
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
10、题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
public class exp2{ public exp2(){
public void fengjie(int n){
for(int i=2;i<=n/2;i++){ if(n%i==0){ System.out.print(i+"*"); fengjie(n/i); } } System.out.print(n); System.exit(0);///不能少这句,否则结果会出错 }
public static void main(String[] args){ String str=""; exp2 c=new exp2(); str=javax.swing.JOptionPane.showInputDialog("请输入N的值(输入exit退出):"); int N; Nt=r0y;{ N=Integer.parseInt(str); }
catch(NumberFormatException e){ e.printStackTrace(); } System.out.print(N+"分解质因数:"+N+"="); c.fengjie(N); } }
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
11、题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
import javax.swing.*;
public class ex5 {
public static void main(String[] args){ String str=""; str=JOptionPane.showInputDialog("请输入N的值(输入exit退出):"); int N; Nt=r0y;{ N=Integer.parseInt(str); catch(NumberFormatException e){ e.printStackTrace(); } str=(N>90?"A":(N>60?"B":"C")); System.out.println(str); } }
程序分析:(a> b)?a:b这是条件运算符的基本例子。
12、题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
最大公约数: public class CommonDivisor
{ public static void main(String args[]) { commonDivisor(24,32); }static int commonDivisor(int M, int N) { if(N<0||M<0) { Sryesttuermn.out.println("ERROR!"); -1; }if(N==0) { rSeytsutrenm.out.println("the biggest common divisor is :"+M); M; }return commonDivisor(N,M%N); } }
//最小公倍数和最大公约数: import java.util.Scanner;
public class CandC { //下面的方法是求出最大公约数 public static int gcd(int m, int n) {while (true) {if ((m = m % n) == 0)
return n;
if ((n = n % m) == 0)
return m; }} public static void main(String args[])
throws Exception { //取得输入值 //Scanner chin = new Scanner(System.in); /i/ntint a = chin.nextInt(), b = chin.nextInt();
a=23;
int b=32;
int c = gcd(a, b); System.out.println("最小公倍数:" + a * b / c + "\n最大公约数:" + c); }}
程序分析:辗转相除法