Java方法练习题(方法重载、递归)

目录

1.使用函数求最大值         * 创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。         *     要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算

2.求 N 的阶乘

3.求1!+2!+3!+4!+........+n!的和

4.求斐波那契数列的第n项

5.求和的重载  *  在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果

 6.求最大值方法的重载         * 在同一个类中定义多个方法:要求不仅可以求2个整数的最大值,还可以求3个小数的最大值?


1.使用函数求最大值
         * 创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。
         *     要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算

  public static int max2(int a,int b) {
        return a>b?a:b;
    }
    public static int max3(int a,int b,int c) {
        return max2(max2(a,b),c);
    }
    public static void main1(String[] args) {
        /**
         * 使用函数求最大值
         * 创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。
         *     要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算
         */
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()){
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            int c = scanner.nextInt();
            System.out.println(max3(a,b,c));
        }

    }

2.求 N 的阶乘

public static long fac(long n){
        long ret = 1;
        for (int i = 1; i <= n; i++) {
            ret *= i;
        }
        return ret;
    }
    public static void main2(String[] args) {
        /**
         * 求 N 的阶乘
         */
        Scanner scanner = new Scanner(System.in);
        long n = scanner.nextLong();
        System.out.println(fac(n));//n = 5 ,fac = 120
    }

3.求1!+2!+3!+4!+........+n!的和

    public static long facSum(long k) {
        long sum = 0;
        for (int i = 1; i <= k; i++) {
            sum += fac(i);
        }
        return sum;
    }
    public static void main3(String[] args) {
        /**
         * 求1!+2!+3!+4!+........+n!的和
         */
        Scanner scanner = new Scanner(System.in);
        long n = scanner.nextLong();
        System.out.println(facSum(n));//n=5 facSum=153
    }

4.求斐波那契数列的第n项

 //递归法
    public static long fib1(long n) {
        if(n<=2){
            return 1;
        }else {
            return fib1(n-1)+fib1(n-2);
        }
    }
//迭代法(循环)
    public static long fib2(long n){
        //1 1 2 3 5 8 13
        //a b c
        //  a b c
        int a = 1;
        int b = 1;
        int c = 1;
        while(n > 2){
            c = a + b;
            a = b;
            b = c;
            n--;
        }
        return c;
    }
    public static void main(String[] args) {
        /**
         * 求斐波那契数列的第n项。(迭代实现)
         *
         */
        Scanner scanner = new Scanner(System.in);
        long n = scanner.nextLong();
        System.out.println(fib2(n));//n = 10, fib(10) = 55
    }

5.求和的重载
  *  在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果


    public static int sum(int a,int b) {
        return a+b;
    }
    public static double sum(double a,double b,double c) {
        return a+b+c;
    }
    public static void main5(String[] args) {
        /**
         * 求和的重载
         *  在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果
         */
        int a = 1;
        int b = 2;
        double c = 3.8;
        System.out.println(sum(a,b));//1+2=3
        System.out.println(sum(a,b,c));//1+2+3.8=6.8
    }

 6.求最大值方法的重载
         * 在同一个类中定义多个方法:要求不仅可以求2个整数的最大值,还可以求3个小数的最大值?

import java.util.Scanner;

public class Test {
    public static int max(int m,int n) {
        return m>n?m:n;
    }
    public static int max(int m,int n,int k) {
        return max(max(m,n),k);
    }

    public static void main6(String[] args) {
        /**
         * 求最大值方法的重载
         * 在同一个类中定义多个方法:要求不仅可以求2个整数的最大值,还可以求3个小数的最大值?
         */
        System.out.println(max(1,2));
        System.out.println(max(1,2,10));
    }
  
}

你可能感兴趣的:(java,开发语言)