Java Рекурсия. Выход для следующей программы - PullRequest
1 голос
/ 21 декабря 2011

Я ищу несколько кратких объяснений того, как работает приведенная ниже программа или код. Спасибо

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 ]

2 голосов
/ 21 декабря 2011

Эта программа пытается преобразовать десятичное число в двоичное с использованием рекурсии. Давайте возьмем пример:

Десятичное число 5 -> Двоичное 101

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

Output: 101 
0 голосов
/ 21 декабря 2011

Это простой рекурсивный вызов. Если часть будет выполнена только один раз, т.е. когда inum = 1;Часть else продолжает вызывать только команду convert (каждый раз сокращая значение inum на 2), и когда мы не можем продолжить погружение inum, сначала выполняется часть if и возвращается к следующей рекурсивной версии с накоплением, и выводится остаток, полученный при делении inum./2.

...