java方法有关练习题

1、找出出现一次的数字

有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。


/**
 * Created with IntelliJ IDEA.
 * Description:有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。
 * User: starry
 * Date: 2020 -12 -11
 * Time: 16:50
 */
public class Work1 {
    
    
    public static int searchNum(int[] arr){
    
    
        int len=arr.length;
        for(int i=0;i<len;i++){
    
    
            int appear=1;
            for(int j=0;j<len;j++){
    
    
                if(arr[i]==arr[j]&&(i!=j)){
    
    
                    appear=2;
                    break;
                }
            }
            if(appear==1){
    
    
                return arr[i];
            }
        }
        return 0;
    }
    public static void main(String[] args) {
    
    
        int[] arr={
    
    2,3,5,1,3,5,2};
        System.out.println(searchNum(arr));
    }
}

2、斐波那契数

求斐波那契数列的第n项。(迭代实现)

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:求斐波那契数列的第n项。(迭代实现)
 * User: starry
 * Date: 2020 -12 -11
 * Time: 17:03
 */
public class Work2 {
    
    
    public static int fei(int n){
    
    
        int left=1;
        int right=1;
        int tmp=0;
        for(int i=0;i<n-2;i++){
    
    
            tmp=right;
            right=left+right;
            left=tmp;
        }
        return right;
    }
    public static void main(String[] args) {
    
    
        int n=0;
        Scanner cin=new Scanner(System.in);
        n=cin.nextInt();
        int num=fei(n);
        System.out.println(num);
    }
}

3、求阶乘和

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

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:求1!+2!+3!+4!+........+n!的和
 * User: starry
 * Date: 2020 -12 -11
 * Time: 17:31
 */
public class Work3 {
    
    
    public static int sum(int n){
    
    
        int a=1;
        int sum=0;
        for(int i=1;i<=n;i++){
    
    
            a=1;
            for(int j=1;j<=i;j++){
    
    
                a=a*j;
            }
            sum=sum+a;
        }
        return sum;
    }
    public static void main(String[] args) {
    
    
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        System.out.println(sum(n));
    }
}

4、求 N 的阶乘

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:求 N 的阶乘
 * User: starry
 * Date: 2020 -12 -11
 * Time: 18:05
 */
public class Work4 {
    
    
    public static int factorial(int n){
    
    
        int fac=1;
        for(int i=1;i<=n;i++){
    
    
            fac*=i;
        }
        return fac;
    }
    public static void main(String[] args) {
    
    
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        System.out.println(factorial(n));
    }
}

5、奇数位于偶数之前

调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。

/**
 * Created with IntelliJ IDEA.
 * Description:调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。
 * User: starry
 * Date: 2020 -12 -11
 * Time: 18:09
 */
public class Work5 {
    
    
    public static void change(int[] arr){
    
    
        int len=arr.length;
        for(int i=0;i<len;i++){
    
    
            if(arr[i]%2==0){
    
    
                for(int j=i+1;j<len;j++){
    
    
                    if(arr[j]%2==1){
    
    
                        int tmp=arr[i];
                        arr[i]=arr[j];
                        arr[j]=tmp;
                        break;
                    }
                }
            }
        }
    }
    public static void main(String[] args) {
    
    
        int[] arr={
    
    5,2,7,8,9,4,1,6,3,0};
        change(arr);
        for(int a:arr){
    
    
            System.out.print(a+" ");
        }
    }
}

6、求最大值

创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。

​ 要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。
 * ​ 要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算
 * User: starry
 * Date: 2020 -12 -11
 * Time: 18:37
 */
public class Work6 {
    
    
    public static int max2(int a,int b){
    
    
        return a>b?a:b;
    }
    public static int max3(int a,int b,int c){
    
    
        int max=max2(a,b);
        max=max2(max,c);
        return max;
    }
    public static void main(String[] args) {
    
    
        Scanner cin=new Scanner(System.in);
        int a=cin.nextInt();
        int b=cin.nextInt();
        int c=cin.nextInt();
        System.out.println(max3(a,b,c));
    }
}

7、求最大值方法的重载

/**
 * Created with IntelliJ IDEA.
 * Description:在同一个类中定义多个方法:要求不仅可以求两个整数的最大值,还可以求两个小数的最大值,以及两个小数和一个整数的大小关系
 * User: starry
 * Date: 2020 -12 -12
 * Time: 17:23
 */
public class Work7 {
    
    
    public static int max(int a,int b){
    
    
        return a>b?a:b;
    }
    public static float max(float c,float d){
    
    
        return c>d?c:d;
    }
    public static void max(int a,float c,float d){
    
    
        if((float)a>c){
    
    
            System.out.println(a+">"+c);
        }else{
    
    
            System.out.println(a+"<"+c);
        }
        if((float)a>d){
    
    
            System.out.println(a+">"+d);
        }else{
    
    
            System.out.println(a+"<"+d);
        }
    }
    public static void main(String[] args) {
    
    
        int a=5;
        int b=8;
        float c=6.5f;
        float d=8.9f;
        int maxInt=max(a,b);
        System.out.println(maxInt);
        float maxFloat=max(c,d);
        System.out.println(maxFloat);
        max(a,c,d);
    }
}

8、求和的重载

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


/**
 * Created with IntelliJ IDEA.
 * Description:在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果
 * User: starry
 * Date: 2020 -12 -12
 * Time: 19:00
 */
public class Work8 {
    
    
    public static int sum(int a,int b){
    
    
        return a+b;
    }
    public static float sum(float a,float b,float c){
    
    
        return a+b+c;
    }
    public static void main(String[] args) {
    
    
        int a=3;
        int b=4;
        float c=6.2f;
        float d=5.1f;
        float e=1.9f;
        int sum1=sum(a,b);
        System.out.println(sum1);
        float sum2=sum(c,d,e);
        System.out.println(sum2);
    }
}

9、青蛙跳台阶问题

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:青蛙跳台阶问题
 * User: starry
 * Date: 2020 -12 -12
 * Time: 19:18
 */
public class Work9 {
    
    
    /**
     * 若一次能跳1或2级台阶,共n级台阶能有多少种方法
     * f(n)=f(n-1)+f(n-2)
     */
    public static int jump1(int n){
    
    
        if(n==0){
    
    
            return 0;
        }
        if(n==1){
    
    
            return 1;
        }
        if(n==2){
    
    
            return 2;
        }
        return jump1(n-1)+jump1(n-2);
    }
    /**
     * 若一次能跳n级台阶,共n级台阶能有多少种方法
     * f(n)=f(n-1)+f(n-2)+f(n-3)+...+f(1)+1
     * f(n-1)=f(n-2)+f(n-3)+f(n-4)+...+f(1)+1
     * 两式相减得
     * f(n)=2*f(n-1)
     */
    public static int jump2(int n){
    
    
        if(n==0){
    
    
            return 0;
        }
        if(n==1){
    
    
            return 1;
        }
        return 2*jump2(n-1);
    }

    public static void main(String[] args) {
    
    
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        int num1=jump1(n);
        System.out.println(num1);
        int num2=jump2(n);
        System.out.println(num2);
    }
}

10、递归求解汉诺塔问题


/**
 * Created with IntelliJ IDEA.
 * Description:递归求解汉诺塔问题
 * User: starry
 * Date: 2020 -12 -12
 * Time: 19:49
 */
public class Work10 {
    
    
    public static void hanoi(int n, char A, char B, char C) {
    
    
        if (n == 1) {
    
    
            move(A, C);
        } else {
    
    
            hanoi(n - 1, A, C, B);//步骤1 按ACB数序执行N-1的汉诺塔移动
            move(A, C);             //步骤2   执行最大盘子移动
            hanoi(n - 1, B, A, C);//步骤3 按BAC数序执行N-1的汉诺塔移动
        }
    }

    public static void move(char A, char C) {
    
    //执行最大盘子的从A-C的移动
        System.out.println("move:" + A + "--->" + C);
    }

    public static void main(String[] args) {
    
    
        System.out.println("移动汉诺塔的步骤:");
        hanoi(3, 'a', 'b', 'c');
    }
}

11、递归求斐波那契数列的第 N 项

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:递归求斐波那契数列的第 N 项
 * User: starry
 * Date: 2020 -12 -12
 * Time: 20:26
 */
public class Work11 {
    
    
    public static int feiBo(int n){
    
    
        if(n==1){
    
    
            return 1;
        }
        if(n==2){
    
    
            return 1;
        }
        return feiBo(n-1)+feiBo(n-2);
    }

    public static void main(String[] args) {
    
    
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        System.out.println(feiBo(n));
    }
}

12、返回的数字之和

写一个递归方法,输入一个非负整数,返回组成它的数字之和


import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:写一个递归方法,输入一个非负整数,返回组成它的数字之和
 * User: starry
 * Date: 2020 -12 -12
 * Time: 20:32
 */
public class Work12 {
    
    
    public static int sum(int n){
    
    
        if(n/10==0){
    
    
            return n;
        }
        return n%10+sum(n/10);
    }

    public static void main(String[] args) {
    
    
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        System.out.println(sum(n));
    }
}

13、递归打印数字的每一位

按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) (递归)

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) (递归)
 * User: starry
 * Date: 2020 -12 -12
 * Time: 20:43
 */
public class Work13 {
    
    
    public static void printNum(int n){
    
    
        if(n>9){
    
    
            printNum(n/10);
        }
        System.out.println(n%10+" ");
    }

    public static void main(String[] args) {
    
    
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        printNum(n);
    }
}

14、递归求和

递归求 1 + 2 + 3 + … + 10

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:递归求 1 + 2 + 3 + ... + 10
 * User: starry
 * Date: 2020 -12 -12
 * Time: 20:55
 */
public class Work14 {
    
    
    public static int sum(int n){
    
    
        if(n==1){
    
    
            return 1;
        }
        return n+sum(n-1);
    }

    public static void main(String[] args) {
    
    
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        System.out.println(sum(n));
    }
}

15、递归求 N 的阶乘

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:递归求 N 的阶乘
 * User: starry
 * Date: 2020 -12 -12
 * Time: 21:01
 */
public class Work15 {
    
    
    public static int factorial(int n){
    
    
        if(n==1){
    
    
            return 1;
        }
        return n*factorial(n-1);
    }

    public static void main(String[] args) {
    
    
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        System.out.println(factorial(n));
    }
}

猜你喜欢

转载自blog.csdn.net/starry1441/article/details/113756126