最适合freshman的Java习题集

Posted 王嘻嘻-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最适合freshman的Java习题集相关的知识,希望对你有一定的参考价值。

  1. 求阶乘和
  2. 求和的重载
  3. 青蛙跳台阶问题
  4. 递归求解汉诺塔问题
  5. 递归求斐波那契数列的第 N 项
  6. 返回的数字之和

1.求阶乘和

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

import java.util.Scanner;

public class practice 
    public static void main(String[] args) 
        //求n个阶乘和
        //求1!+2!+3!+4!+........+n!的和

        System.out.println("Please Enter A Num : ");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        long sum = 0;
        for (int i = 1; i <= n; i++) 
            sum+=factorial(i); //调用方法
        
        System.out.print("1~"+n+"的阶乘和为:"+sum);
    

    public static long factorial(int n)  //阶乘方法
        long num = 1;
        for (int i = 1; i <= n; i++) 
            num*=i;
        
        return num;
    

 

2.求和的重载

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

import java.util.Scanner;

public class practice 
    public static void main(String[] args) 
        //求和的重载
        //在同一个类中,分别定义求两个整数之和的方法和三个小数之和的方法。
        Scanner scanner = new Scanner(System.in);
        System.out.print("Please Enter The First Integer:");
        long a1 = scanner.nextLong();
        System.out.print("Please Enter The Second Integer:");
        long a2 = scanner.nextLong();
        System.out.print("Please Enter The First Decimal:");
        double b1 = scanner.nextDouble();
        System.out.print("Please Enter The Second Decimal:");
        double b2 = scanner.nextDouble();
        System.out.print("Please Enter The Third Decimal:");
        double b3 = scanner.nextDouble();
        System.out.print("Integer Sum: "+sum(a1,a2));
        System.out.println();
        System.out.print("Decimal Sum: "+sum(b1,b2,b3));
    
    public static long sum(long a1,long a2)
        return a1+a2;
    
    //方法重载
    public static double sum(double b1,double b2,double b3)
        return b1+b2+b3;
    

3.青蛙跳台阶问题 (从三开始就是斐波那契数列,即F(3)=F(2)+F(1),则采用递归思想)

青蛙一次可以跳一个台阶,或者两个台阶,求解青蛙一次跳num阶台阶总共多少种方法。

import java.util.Scanner;

public class practice 
    public static void main(String[] args) 
        //青蛙跳台阶问题
        Scanner scanner = new Scanner(System.in);
        System.out.print("Please Enter A Num:");
        int num = scanner.nextInt();
        int n = JumpFloor(num);
        System.out.print("青蛙跳"+num+"阶台阶总共有"+n+"种方法");
    
    public static int JumpFloor(int n)
        if (n<=0)
            return -1;
        if (n==1)
            return 1;
        if (n==2)
            return 2;
        else
            return JumpFloor(n-1)+JumpFloor(n-2);//递归思想
        
    

 

4.递归求解汉诺塔问题


import java.util.Scanner;

public class practice 
    public static void main(String[] args) 
       //汉诺塔
        Scanner scanner = new Scanner(System.in);
        System.out.print("Please Enter A Num:");
        int nDisks = scanner.nextInt();
        char A = 'A';
        char B = 'B';
        char C = 'C';
        hanoiTower(nDisks,A,B,C);
    
    /*
    nDisks盘子编号
    A,B,C为三个塔编号
     */
    public static void hanoiTower(int nDisks,char A,char B,char C)
        if (nDisks==1)
            // 一步到位 A -> C
            // 移动盘子步骤
            move(nDisks,A,C);
            return;
        
        // 此时nDisks > 1
        // 核心步骤1.先将n - 1个盘子从A -> B ,C作为辅助
        hanoiTower(nDisks-1,A,C,B);
        // 核心步骤2.此时最大的盘子在A上,C为空,n - 1都在B上
        move(nDisks,A,C);
        // 核心步骤3.只需将n - 1个盘子再从B -> C,A作为辅助
        hanoiTower(nDisks-1,B,A,C);
    
    // 将编号为n的盘子,从souce -> dist
    public static void move(int nDisks, char sourceTower, char distTower) 
        System.out.println("编号为"+nDisks+"的盘子从"+sourceTower+"->"+distTower);
    

 

5.递归求斐波那契数列的第 N 项  (F(3)=F(2)+F(1)) 

如:1  1  2  3  5  8  13  ……

import java.util.Scanner;

public class practice 
    public static void main(String[] args) 
     //求斐波那契的第n项
        Scanner scanner = new Scanner(System.in);
        System.out.print("Please enter Fibonacci item n:");
        int n = scanner.nextInt();
        System.out.println(fiBo(n));
    
    public static int fiBo(int n)
        if (n>2)
            return fiBo(n-1)+fiBo(n-2);
        else
            return 1;
        
    

 

6.返回的数字之和

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

import java.util.Scanner;

public class practice 
    public static void main(String[] args) 
        //返回的数字之和
        Scanner scanner = new Scanner(System.in);
        System.out.print("Please Enter A Nonnegative Integer:");
        int num = scanner.nextInt(); //num表示输入的非负整数
        int n = fDigitSum(num); //将输入的num分解各位求和
        System.out.println("组成"+num+"的数字之和为"+n);
    
    public static int fDigitSum(int n)
        if (n<10)
            return n;
        else
            return n % 10 + fDigitSum(n/10); //递归思想,先取其个位数,将其余的交给fDigitSum函数
        
    


本小节完~

以上是关于最适合freshman的Java习题集的主要内容,如果未能解决你的问题,请参考以下文章

最适合freshman的Java习题集

最适合freshman的Java习题集数组

Python???freshman02

Python之freshman04

Python之freshman01

Python之freshman05