这事一个递归算法把十进制的数字转化为二进制的数字
public class TestDemo
{
public static void main(String[] args)
{
toBinary(10);
}
public static void toBinary(int num)
{
if(num == 0)
{
return;
}
toBinary(num /2);
System.out.print(num%2);
}}
在运行到toBinary(num/2)这个方法时就一直调用递归
当num==0时,就返回到方法的调用处,打印语句System.out.print(num%2);
我觉得就不会输出,为什么,它能输出呢?递归

解决方案 »

  1.   

    当从递归出口返回的时候,便会执行打印语句
    以10为例:
    toBinary(10)
       toBinary(5)
          toBinary(2)
             toBinary(1)
                toBinary(0)
                System.out.print(1%2);
             System.out.print(2%2);
          System.out.print(5%2);
       System.out.print(10%2);
      

  2.   

    这个程序很明显的递归调用,最后一次是输入参数是0,这时候return ,没有输出,返回到上一层的调用方法就是输入参数是1,此时输出是1,;再返回上一层次输入参数是2,输出的是0;返回上一层次输入参数5,输出是1;返回上一层次输入参数是10,输出是0
    这是这个程序的执行过程。递归调用需要很深入的理解栈的操作,这样可以理解更加透彻。
      

  3.   

    调用的方法又不在if里面,执行到num=0时就按顺序执行语句了