2012-04-17 3 views
-3

Мне нужно создать рекурсивный метод, который преобразует первое значение (основание 10) в число в базе второго. Это то, что я до сих пор, но по какой-то причине я не могу заставить рекурсивную функцию работать правильно. Спасибо.метод рекурсивного деления

package lab06250; 

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     Number newNumber; 
     newNumber = new Number(); 
     Scanner kbd = new Scanner(System.in); 
     int number; 
     int remainder = 0; 
     int base; 

     System.out.println("Enter number:"); 
     number = kbd.nextInt(); 
     System.out.println("Enter base"); 
     base = kbd.nextInt(); 
     kbd.nextLine(); 

    System.out.println(Division(number, base)); 

    } 
    public static int Division(int n, int b){ 
     int result; 
     if (n == 1) 
      result = 1; 
      else 
       result = Division(b, (n/b)); 

     return n; 
    } 

} 
+1

Что не так с кодом? Ошибки? ? нарушать дисциплину Вы должны сообщить нам подробности. –

+0

Я вижу хотя бы одну ошибку с вашим базовым корпусом. Поскольку вы делите ints, вы получите «n == 0' вместо' n == 1' – bdares

+0

Ну, когда я попытался запустить свою программу, это не дает мне правильного значения. И это бросает мне это сообщение об ошибке; – user1337740

ответ

1

Прежде всего, я думаю, что есть поток в вашей логике, если вы хотите изменить базу (догадка система счисления здесь)

работает следующим образом:

11 в десятичной системе (числовой системы 10), а затем

1*(power(10,1)) + 1*(power(10,0) 

Его двоичный эквивалент (1 высокая в 2 основание)

1*(power(2*3)) + 0*(power(2*2)) + 1*(power(2*1)) + 1*(power(2*0)) 

Его октановое эквивалент (7 самых высоких в 8 основание)

1*(power(8*1)) + 3*(power(8*0)) 

Вы должны написать что-то на базах выше и исправить вашу логику. Только одно предложение использует% вместо деления и пытается добавить результат.

+0

Спасибо, но я не хочу менять базу, которая останется изменением. То, что я хотел бы изменить, - это номер. – user1337740

+0

Спасибо, я попробую это. – user1337740

Смежные вопросы