Java递归。以下程序的输出

时间:2011-12-21 00:35:37

标签: java oop recursion

我正在寻找关于以下程序或代码如何工作的一些简要说明。谢谢

public void Convert( int iNum )
{
    int m = 0;
    if (iNum == 1 )
        System.out.print( iNum );
    else
    {
        m = iNum % 2;
        Convert(iNum/2);
        System.out.print(m);
    }
}

2 个答案:

答案 0 :(得分:2)

此程序尝试使用递归将十进制数转换为二进制数。让我们举一个例子:

十进制5 - >二进制101

Convert(5):
m = 5 %2 -> 1
   Convert(2):
       m -> 2%2 -> 0
       Convert(1)
          The first if is true: -> 1

Output: 101 

答案 1 :(得分:0)

这是一个简单的递归调用 if部分只执行一次,即inum = 1; else部分只保持调用convert(每次将inum的值减去2),当我们不能进一步潜入inum时,首先执行if部分并返回到下一个堆叠的递归版本并打印剩余部分,我们得到了div inum / 2。