首页 > 代码库 > 递归的理解

递归的理解

    //十进制的数转化为二进制
    public static void toBin(int num){
        if(num > 0){
            toBin(num/2);
            System.out.println(num%2);
        }
    }

  以上面的十进制转化为二进制为例:传参数传入6,把6转化为二进制:使用递归函数不断的调用自身,由于方法在java中是存放到栈中的:在栈中分配空间如下图:

 

递归总有结束的时候,当if(0>0)的时候结束,然后逆向输出结果,从下到上,最后一个递归方法直接结束,因为if(0>0)不成立,也就是说toBin(0)方法没打印结果,到倒数第二个toBin(1),首先if(1>0)条件成立,执行到toBin(1/2)也就是toBin(0),由于知道toBin(0)执行完了,所以toBin(1/2)执行完,相当于直接执行输出方法(1%2)=1,所以打印出1,同理toBin(3/2)执行完了在,执行打印语句3%2,打印出1,同理toBin(6/2)执行完了,执行打印语句

6%2=0,结果为110.