方法的重载以及递归结构

方法重载

java允许同一个类中定义多个同名方法,只要他们的形参列表不同即可。如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,这种情况被称为方法重载。

构成方法重载的条件:

  1. 构成列表不同的含义:形参类型、形参个数、形参顺序不同
  2. 只有返回值不同不构成方法的重载,如:int a (String str){}与void a(String str){}不构成方法重载
  3. 只有形参的名称不同,不构成方法的重载。如:Int a(String str){}与int a(String s){}不构成方法重载

递归结构

递归的基本思想就是自己调用自己

递归结构包括两个部分:

  1. 定义递归头解决:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件
  2. 递归体。解决:什么时候需要调用自身方法
//测试递归结构阶乘
public class Test {
    public static void main(String[] args) {
       int b =  test(8);
        System.out.println(b);
    }
    public static int test(int a ){
        if(a==1){
            return 1;
        }else {
            return a*test(a-1);
        }
    }
}

代码练习:算输入数的阶乘
程序运行顺序:

  1. 先写好test方法,代码的含义是如果实际参数=1,则结果返回1,如果实际参数不是1,则返回实际参数*这个方法(传进来的实际参数本身-1)
  2. main方法开始调用test方法,定义一个变量B,它的结果调用test方法
  3. 给变量b传递实际参数=8,程序会转到我们写好的test方法继续运行,首先会检查传进来的数,传递的数是8会进行下一步,本来程序会执行8* (8-1)这里结束,但是因为我们这里又引用了test结构给a重新赋值,等于传进来的数减去1,所以程序会把返回的结果继续返回该方法继续计算,再次进入test方法计算,这里实际参数变为7,不符合结束条件继续运行计算,返回7*(7-1)算出结果,然后又一次返回到test方法进行运算,依次类推
  4. 直到运行n次以后传递进来的数=1了,碰到return返回结果,结束方法的调用
  5. 程序返回到main方法,把通过test方法得出的值赋给变量b并输出,程序结束运行。

阶乘:一个正整数的阶乘factorial)是所有小于及等于该数的正整数,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。

亦即n!=1×2×3×...×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

posted @   萧何i  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示