JAVA每日随手练【方法的重载与递归】
1.求最大值方法的重载
功能:在同一个类中定义多个方法:要求不仅可以求两个整数的最大值,还可以求两个小数的最大值,以及两个小数和一个整数的大小关系
代码:
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("选择功能,1.求两个整数的最大值 2.求两个小数的最大值 3.求两个小数和一个整数的大小关系,请输入数字:");
int m = sc.nextInt();
switch(m){
case 1:
System.out.print("请输入第一个整数:");
int a1 = sc.nextInt();
System.out.print("请输入第二个整数:");
int a2 = sc.nextInt();
int max1 = max(a1,a2);
System.out.println("最大值为:"+max1);
break;
case 2:
System.out.print("请输入第一个小数:");
double a3 = sc.nextDouble();
System.out.print("请输入第二个小数:");
double a4 = sc.nextDouble();
double max2 = max(a3,a4);
System.out.println("最大值为:"+max2);
break;
case 3:
System.out.print("请输入第一个小数:");
double a5 = sc.nextDouble();
System.out.print("请输入第二个小数:");
double a6 = sc.nextDouble();
System.out.print("请输入第三个整数:");
int a7 = sc.nextInt();
double max3 = max(a5,a6,a7);
double min3 = min(a5,a6,a7);
System.out.println("三个数的最大值为:"+max3);
System.out.println("三个数的最小值为:"+min3);
break;
}
sc.close();
}
public static int max(int a1,int a2){
return a1>a2?a1:a2;
}
public static double max(double a3,double a4){
return a3>a4?a3:a4;
}
public static double min(double a5,double a6){
return a5<a6?a5:a6;
}
public static double max(double a5,double a6,int a7){
return max(a5,a6)>a7?max(a5,a6):a7;
}
public static double min(double a5,double a6,int a7){
return min(a5,a6)<a7?min(a5,a6):a7;
}
}
运行结果:
2.求和的重载
功能:在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果
代码:
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
System.out.println("两个整数的和是"+add(m,n));
double i = sc.nextDouble();
double j = sc.nextDouble();
double k = sc.nextDouble();
System.out.println("三个小数的和是"+add(i,j,k));
sc.close();
}
public static int add(int a,int b) {
return a+b;
}
public static double add(double i,double j,double k) {
return i+j+k;
}
}
运行结果:
3.递归打印数字的每一位
功能:按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) (递归)
import java.util.Scanner;
public class test3 {
public static void main(String[] args) {
System.out.println("输入数字:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println("每一位数字为:");
fun(n);
sc.close();
}
public static void fun(int n){
if(n>9){
fun(n/10); //除法(取模),对于int则是取除法结束后的整数,/10则等于去掉个位数 例如:456789 依次去掉》9 8 7 6 5 4
}
System.out.print(" "+n%10+" "); //取余,获取个位数 依次是《4 5 6 7 8 9
}
}
运行结果:
4.递归求和
要求:递归求 1 + 2 + 3 + … + 10
public class test4{
public static void main(String[] args) {
int num=10;
System.out.println("1+2+3+...+10的值为:"+add(num));
}
public static int add(int num){
if(num == 1){
return 1;
}else{
return num +add(num - 1); //依次是add(9)>>add(1)==1,也就是10+add(9)==10+9+num(8)+....==10+9+..+2+num(1)==10+9+8+..+1
}
}
}
运行结果:
5.求斐波那契数列的第 N 项
要求:求斐波那契数列的第 N 项
//递归求斐波那契数列的第 N 项
import java.util.Scanner;
public class test5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in) ;
System.out.print("请输入要求的斐波那契数列的项数:");
int m = sc.nextInt();
System.out.println("斐波那契数列的"+ m +"项的值为:"+fib(m));
sc.close();
}
public static int fib(int n){
if(n<3){
return 1;
}else{
int a1 = 1;
int a2 = 1;
int sum = 0;
for (int i=3;i<=n;i++){
sum = a1 +a2;
a1 = a2;
a2 = sum;
}
return sum;
}
}
}
运行结果: