递归排序

1.将十进制数转换成二进制数使用递归实现:递归一般使用逆向思维,求大值,由小值一步一步向上堆叠进行。求一个十进制数的二进制表示就是每轮都进行除以2的运算和每轮都保留余数的运算。最后再把余数反序相加就是这个十进制数的二进制表示。递归:就是在方法中再一次调用这个方法,使用关键字return进行返回(当执行完成这个方法后,程序执行返回到调用这个方法的地方),方法中调用方法意味着在方法中创建一个又一个的返回点,可以理解为程序建立多个层,当然方法是相同的,当这一层执行完毕,返回到上一层的调用点继续执行。


一次又一次的调用to方法,直到传入to方法的第一个参数为0时,不再使用return调用to方法,开始由深层向外层逐层返回,在返回的过程中会执行每一层剩下的代码:+AZ[a%b],这样这些余数就窜起来表示成二进制了。为什么a/b能等于0;因为ab都是整型,当1/2时就等于0;碰巧的是转换成二进制时,余数组合时需要反转,而递归操作将字符相加的过程时由深层到外层的,所以不用进行反转。

斐波纳契数列(1、1、2、3、5、8、13、21)使用递归:

   public static void main(String[] args) {  
        Fibonacci fibonacci=new Fibonacci();  
        int result=fibonacci.fib(5);  
               System.out.println(result);  
    }  
  
    public int fib(int index){  
        if(index==1||index==2){  
            return 1;  
        }else{  
            return fib(index-1)+fib(index-2);  
        }  
    }  
}  

这一次递归同一层调用了两次函数,但是执行顺序都是先执行第一个函数

 fib(index-1)

,在返回时再执行第二个函数

fib(index-2);  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值