У меня это много сделано, но я не могу понять, что включить в мой аргумент для моего рекурсивного метода. Я не знаю, что положить в num1 = (Math.pow (base, (binToDecimal (s.length() - 1))));. s.length() - 1 не работает, потому что это не строка, но я не знаю, что добавить сюда. Также мой рекурсивный метод подходит к моему основному делу? Моя идея заключается в том, что каждый раз она каждый раз уменьшает длину строки на единицу и останавливается, когда длина строки равна нулю, но я не думаю, что она работает. Можете ли вы также использовать Math.pow для этого? Я видел некоторые другие решения в Интернете, и никто из них не используют Math.powПреобразование двоичного в десятичное с использованием рекурсивного метода
public static int binToDecimal(String s)
{
//base case
if(s.equals("1"))
return 1;
if(s.equals("0"))
return 0;
int num1 = 0;
int finalAnswer = 0;
int base = 2.0;
//recursive case
if(s.length() > 1)
num1 = (Math.pow(base,(binToDecimal(s.length()-1))));
finalAnswer = num1 + finalAnswer;
return
finalAnswer;
}
Спасибо за ответ, но я не слишком уверен в переключениях, потому что я никогда не использовал их так сильно. Я все еще пытаюсь выяснить, что я могу использовать вместо s.length() - 1 в (binToDecimal (s.length() - 1)) – Anonymous
Используйте 's.substring (0, s.length() - 1). Вероятно, вы все равно пытались это сделать. –
спасибо, что я получил эту часть работы, теперь исправить ее, чтобы она дала мне правильный ответ – Anonymous