方法的使用练习题

方法的使用练习题

1.有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。
public static void main(String[] args) {
        int[] arr = {0, 1, 0, 1, 4};
        System.out.println(findOnceNum(arr));
    }

    public static int findOnceNum(int[] arr) {
        int a = 0;
        for (int i = 0; i < arr.length; i++) {
            a = a ^ arr[i];
        }
        return a;
    }
2.求斐波那契数列的第n项。(迭代实现)
public class Test02 {
    public static void main(String[] args) {
        System.out.println(fib(1));
        System.out.println(fib(9));
        System.out.println(fib(39));
    }
    public static int fib(int num) {
        int f1 = 1, f2 = 1, f3 = 1;
        for (int i = 3; i <= num; i++) {
            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
        }
        return f3;
    }
}
3.求1!+2!+3!+4!+…+n!的和
public class Test03 {
    public static void main(String[] args) {
        System.out.println(sumFac(5));
        System.out.println(sumFac(6));
    }

    public static int sumFac(int num) {
        int sum = 0;
        for (int i = 1; i <= num; i++) {
            int fac = 1;
            for (int j = 1; j <= i; j++) {
                fac *= j;
            }
            sum += fac;
        }
        return sum;
    }
}
4.求 N 的阶乘 。
public class Test04 {
    public static void main(String[] args) {
        System.out.println(fac(5));
        System.out.println(fac(1));
    }
    public static int fac(int num) {
        int fac = 1;
        for (int i = 1; i <= num; i++) {
            fac *= i;
        }
        return fac;
    }
}
5.调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。
public class Test05 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        int[] arr1 = {1, 2, 3, 4, 5, 6, 7};
        adjust(arr1);
        System.out.println();
        adjust(arr);
    }

    public static void adjust(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] % 2 != 0) {
                    int temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
            }
            System.out.print(arr[i] + " ");
        }
    }
}
6.创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算
public class Test06 {
    public static void main(String[] args) {
        System.out.println(max2(1, 2));
        System.out.println(max2(3, 2));
        System.out.println(max3(1, 2, 3));
        System.out.println(max3(1, 3, 2));
    }

    public static int max2(int a, int b) {
        return a > b ? a : b;
    }

    public static int max3(int a,int b,int c) {
        int max1 = max2(a, b);
        return max1 > c ? max1 : c;
    }
}

7.在同一个类中定义多个方法:要求不仅可以求两个整数的最大值,还可以求两个小数的最大值,以及两个小数和一个整数的大小关系
public class Test07 {
    public static void main(String[] args) {
        System.out.println(max(1, 3));
        System.out.println(max(1.4, 1.5));
        System.out.println(max(1.6, 8.4, 5));
    }
    public static int max(int a,int b) {
        return a > b ? a : b;
    }

    public static double max(double a,double b) {
        return a > b ? a : b;
    }
    public static double max(double a,double b,int c) {
        double max = max(a, b);
        return max > c ? max : c;
    }
}
8.在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果
public class Test08 {
    public static void main(String[] args) {
        System.out.println(sum(1, 5));
        System.out.println(sum(1.1, 2.4, 3.2));
    }

    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;
    }
}
9.青蛙跳台阶
public class Test09 {
    public static void main(String[] args) {
        System.out.println(jumpFloor(1));
        System.out.println(jumpFloor(5));
    }
    public static int jumpFloor(int num) {
        if (num == 1) {
            return 1;
        }
        if (num == 2) {
            return 2;
        }
        return jumpFloor(num - 1) + jumpFloor(num - 2);
    }
}
10.递归求斐波那契数列的第 N 项
public class Test10 {
    public static void main(String[] args) {
        System.out.println(fib(1));
        System.out.println(fib(9));
    }
    public static int fib(int num) {
        if (num == 1 || num == 2) {
            return 1;
        }
        return fib(num - 1) + fib(num - 2);
    }
}
11.递归求和
public class Test11 {
    public static void main(String[] args) {
        System.out.println(sum(1));
        System.out.println(sum(10));
    }
    public static int sum(int num) {
        if (num == 1) {
            return 1;
        }
        return num + sum(num - 1);
    }
}
12.汉诺塔问题
public class Test12 {
    public static void main(String[] args) {
        haoniTower(1,'A','B','C');
        System.out.println();
        haoniTower(2,'A','B','C');
        System.out.println();
        haoniTower(3,'A','B','C');
    }
    public static void move(char a,char b) {
        System.out.print(a+"->"+b+" ");
    }
    public static void haoniTower(int num,char a,char b,char c) {
        if (num == 1) {
            move(a,c);
            return;
        }
        haoniTower(num-1,a,c,b);
        move(a,c);
        haoniTower(num-1,b,a,c);
    }
}
13.按顺序打印一个数字的每一位
public class Test13 {
    public static void main(String[] args) {
        print(1234);
    }
    public static void print(int num) {
        if (num <= 9) {
            System.out.print(num + " ");
        } else {
            print(num/10);
            System.out.print(num%10+" ");
        }
    }
}

14.递归求1+2+3+4+…+10
public class Test14 {
    public static void main(String[] args) {
        System.out.println(sum(10));
    }
    public static int sum(int  num) {
        if (num == 1) {
            return 1;
        }
        return num + sum(num - 1);
    }
}
15.递归求N的阶乘
public class Test15 {
    public static void main(String[] args) {
        System.out.println(fac(5));
    }
    public static int fac(int num) {
        if (num == 1) {
            return 1;
        }
        return num * fac(num-1);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值