2011-12-21 2 views
1

Ищем некоторые краткие объяснения о том, как ниже программа или код works.ThanksРекурсия Java. Выход для следующей программы

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); 
    } 
} 
+0

Является ли это домашнее задание вопрос? –

+0

нет, его нет. это то, что было на экзамене сегодня. так интересно –

+0

вы что-то знаете об этом? –

ответ

2

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

десятичный 5 -> Binary 101

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

Output: 101 
+0

спасибо Чандер! –

0

Это простой рекурсивный вызов Условной часть будет выполнено только один раз то, когда inum = 1; Остальная часть хранит только call-конвертацию (каждый раз, уменьшая значение inum на 2), и когда мы не можем дальше погрузиться внутрь, если выполняется какая-либо часть, и шаг назад к следующей уложенной рекурсивной версии и печатает оставшуюся часть, которую мы разделим inum/2.

+0

спасибо ajay. поэтому для того, чтобы иметь выход, нам НЕОБХОДИМО передать значение для iNum. это правильно ? –

+0

yep thats правый. –