递归
- 递归就是自己调用自己!
- 递归的意思就是不停的调用自己,但是我们要知道的是我们的计算机资源是有限的,一般来说递归的层数不能太深。
递归主要包含两个部分:递归头和递归体
- 递归头:什么时候不调用自身方法。如果没有,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
举个例子:
我们用阶乘来测试一下递归:- public class Demo06 {
- public static void main(String[] args) {
- //阶乘 eg:4的阶乘,就是4!=4*3*2*1
- System.out.println(j(5));
- }
- public static int j(int n){
- if (n==1){
- return 1;
- }else {
- return n*j(n-1);
- }
- }
- }
复制代码 解析:可以看出我们是要求一个4的阶乘,下面写了一个方法来求阶乘,方法里面有一个int类型的参数n。当n为4的时候不满足if语句那么就执行else中的语句,返回一个n*f(n-1),也就是4f(3),再把3带入这个方法,就变成4×3×2f(2),,最后当n==1时,满足上面if的条件,返回结果为120
输出:练习:写一个简单的计算器程序
要求:
- 写4个方法:加减乘除
- 利用循环+switch进行用户交互
- 传递需要操作的两个数
- 输出结果
- public class Demo07 {
- public static void main(String[] args) {
- x();
- }
- public static double x(){
- Scanner sc=new Scanner(System.in);
- System.out.println("请输入要计算的第一个数:");
- double m=sc.nextDouble();
- System.out.println("输入要执行的运算符号(+、-、*、/)中的一个");
- String k=sc.next();
- System.out.println("输入第二个数进行计算:");
- double n=sc.nextDouble();
- switch (k){
- case"+":
- System.out.println(plus(m,n));
- break;
- case "-":
- System.out.println(subtract(m,n));
- break;
- case "*":
- System.out.println(multiply(m,n));
- break;
- case "/":
- System.out.println(divide(m,n));
- break;
- default:
- System.out.println("您输入的运算符有误");
- }
- return 0;
- }
- //编写四个方法,等
- public static double plus(double m,double n){
- return m+n;
- };
- public static double subtract(double m,double n){
- return m-n;
- };
- public static double multiply(double m,double n){
- return m*n;
- };
- public static double divide(double m,double n){
- return m/n;
- };
- }
复制代码 输入数字进行测试:- 请输入要计算的第一个数:
- 5
- 输入要执行的运算符号(+、-、*、/)中的一个
- /
- 输入第二个数进行计算:
- 5
- 1.0
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |