最适合freshman的Java习题集
Posted 王嘻嘻-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最适合freshman的Java习题集相关的知识,希望对你有一定的参考价值。
- 求阶乘和
- 求和的重载
- 青蛙跳台阶问题
- 递归求解汉诺塔问题
- 递归求斐波那契数列的第 N 项
- 返回的数字之和
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习题集的主要内容,如果未能解决你的问题,请参考以下文章