Вот пример рекурсивной процедуры на Java, которая принимает строку, представляющую шестнадцатеричное число, и возвращает его десятичное значение:
public static int hexToDec(String hex) {
if (hex.length() == 1) { // базовый случай: строка содержит один символ
return hexCharToDec(hex.charAt(0));
} else { // рекурсивный случай: строка содержит более одного символа
int lastDigit = hexCharToDec(hex.charAt(hex.length() - 1));
String restOfHex = hex.substring(0, hex.length() - 1);
return 16 * hexToDec(restOfHex) + lastDigit;
}
}
// вспомогательная функция для преобразования одного символа шестнадцатеричной цифры в десятичное число
public static int hexCharToDec(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'A' && c <= 'F') {
return 10 + (c - 'A');
} else if (c >= 'a' && c <= 'f') {
return 10 + (c - 'a');
} else {
throw new IllegalArgumentException("Invalid hexadecimal character: " + c);
}
}
Чтобы использовать эту функцию, вы можете вызвать hexToDec("ABCD"), где "ABCD" - строка, представляющая шестнадцатеричное число. Функция вернет его десятичное значение, равное 43981.
пo зaдaннoй cтpoке cимвoлoв, являющeйcя зaпиcью этoгo чиcлa в шeстнaдцaтeричнoй cиcтeмe cчиcлeния (иcпoльзoвaть peкуpcивный мeтoд)