JavaSE学习笔记——day07——递归

day07

1、递归

递归:就是在当前方法中 调用自己。递归和迭代是等价的,而迭代就 是循环,所以递归也就是重复做某件事

递归的三要素:初始值,终止条件,步长

注意:如果循环能做到的就不要用递归,因为递归效率低,还耗费内 存。

递归的应用场景:一般树状结构需要使用递归来完成

比如菜单目录,每一层递归都是一个循环,如果不 知道有多少个子目录就没办法用循环

实例1:用递归实现求1~N的和

public class Recursion_02 {
    public static void main(String[] args){
        int a = sum1(6);
        System.out.println(a);
    }
    public static int sum1(int n){
        if(n==1){
            return 1;
        }else{
            return sum1(n-1)+n;
        }
    }
}

实例2:已知位数,用递归实现求斐波那契数列对应数值

public class Recursion_03 {
    public static void main(String [] args){
        int a = fbi(10);
        System.out.println(a);
    }
    public static int fbi(int n){
        if(n==1||n==2){
            return 1;
        }else{
            return fbi(n-1)+fbi(n-2);
        }
    }
}

实例3:已知数值,求在斐波那契数列中的位数(写两个方法互相调用)

public class Recursion_04 {
    public static void main(String[] args){
        fbi2(1);
    }
    //此方法功能为输入位数求对应数值
    public static int fbi1(int n1){
        //如果输入的位数为1或者2,那么数值均为1
        if(n1==1||n1==2){
            return 1;
        //否则递归求前一位数
        }else{
            return fbi1(n1-1)+fbi1(n1-2);
        }
    }
    //功能为输入数值求位数
    public static void fbi2(int n2){
        //如果输入的数值为1,那么输出位数为1或者2
        if(n2==1){
            System.out.println("位数为1或者2");
        }else{
            //判断输入的数值是否大于等于fbi1(a)
            for(int a=3;n2>=fbi1(a);a++){
                //如果等于则输出位数
                if(n2==fbi1(a)){
                    System.out.println(a);
                //如果不等于且小于下一位数,则证明不在斐波那契数列内
                }else if(n2<fbi1(a+1)){
                    System.out.println("不在斐波那契数列内");
                }
            }
        }
    }
}

实例4:实现代码:按顺序打印一个数字的每一位(例如1234 打印出1 2 3 4)

public class work_03 {
    public static void main(String[] args){
        m1(1234);
    }
    public static void m1(int n){
        if(n>9){
            m1(n/10);
        }
​
        System.out.println(n%10);
​
    
    }
}
​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值