Java方法练习题(方法重载、递归)
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高级之字符串的使用