最适合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 -> distpublic 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习题集(四)数组
目录 1.求数组的平均值 2.数组所有元素之和 3.改变原有数组元素的值 4.打印数组 5.创建的数组,并且赋初始值 6.存在连续三个奇数的数组 7.多数元素 8.只出现一次的数字 9.两数之和 10 ...
- 最适合freshman的Java习题集(一)
目录 1.猜数字 2.判断闰年 3.输出 1000 - 2000 之间所有的闰年 4.编写一个程序计算数字1-100中出现9的个数. 5.判断素数 6.输出100以内所有素数 7.求出0-999之间的 ...
- Java的三种代理模式简述
本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...
- 有效期判断功能 java_有效的Java第三版有哪些新功能?
有效期判断功能 java 自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容. 我假设将涵盖自Java 6以来引入Java的功能,的确如此. 但是,第三版Java开发人员经典版也 ...
- 有效的Java第三版有哪些新功能?
自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容. 我假设将涵盖自Java 6以来引入Java的功能,的确如此. 但是,第三版Java开发人员经典版也有一些其他更改. 在本文中 ...
- Effective Java第三版有哪些新功能?
自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容. 我假设将涵盖自Java 6以来引入Java的功能,的确如此. 但是,第三版Java开发人员经典版也有一些其他更改. 在本文中 ...
- 网易严选Java开发三面面经:java技术编程培训班
前言 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架.提供了完善的认证机制和方法级的授权功能.是一款非常优秀的权限管理框架.它的核心是一组过滤器链,不同的功能经由不同 ...
- java个十百千万位余数_1 Java第三课[流程控制]
1 Java第三课[流程控制] 1.1 回顾: 1. 标识符的命名:标识符通常意义上是指 类名,包名,方法名,属性名,普通变量等等. 2. 类命名:每个单词的首字母大写; 3. 变量命名规则:字母数字 ...
- Java的三种程序基本结构
Java三种程序基本结构 今天我们了解下Java的三种程序基本结构 理解什么是基本结构 主要分为 :1. 顺序结构 2. 选择结构 3. 循环结构 一丶顺序结构 顺序结构就是程序从上到下一行一行的执行 ...
最新文章
- 程序员都痛恨开会?多开 1 个会,我少写 1000 行代码......
- SQL Server:APPLY表运算符
- NIFI从mysql导入Hbase
- python编程入门第九讲,第九讲作业---函数
- Android 上下文菜单(Context Menu)
- python有趣的案例_Python有趣的小案例
- python类的使用的生物学应用_当AI遇到生物-深度学习在生物研究中的应用案例列表...
- 【数字信号调制】基于matlab二进制数字振幅调制与解调(2ASK)【含Matlab源码 996期】
- Vue学习笔记(尚硅谷天禹老师)
- step 7在win10上安装教程及安装包
- Matplotlib库学习笔记(4) pyplot的文本显示以及Latex的使用
- 爬虫基础知识+Scrapy框架
- 基于情感词典的文本情感分类
- 信诺计算机怎么算一次函数,excel用一次函数进行计算的方法步骤
- VUE-table表格操作列表适配屏幕缩小固定右侧fixed
- 金融IT 行业常见术语
- 求生之路2服务器消息,求生之路2服务器公告设置
- html 气泡样式,jQuery 插件实现随机自由弹跳气泡样式
- Xshell 7 提示 “要继续使用此程序,您必须应用最新的更新或使用新版本”
- 计算机网络——各种计算