Хорошо, в любой рекурсивной функции должна быть некоторая функция, которая стремится к нулю, чтобы что-то остановить. В этом случае, что вы хотите, чтобы действительно смоделировать путь you7 сделать это вручную:
- разделить на радиксе (базовое)
- положить остаток в качестве digite
- повторялся с использованием того же но другая часть дивизии. (Фактор.)
То есть, если вы обнаружили шестнадцатиричное значение 1000, вы берете
dec2base (1000,16):
- , если первый параметр == 0, возвращение, вы сделали
- 1000 мод 16 (= 8) -> сохранить 8
- dec2base (62, 16) -> рекурсии шаг
Теперь, очевидно, каждый раз, когда вы делаете шаг рекуперации, первый параметр меньше, и если вы думаете об этом, то в конечном итоге должен перейти к 0. Так что в конце концов он закончится.
Вот реальный простой вариант в Python:
result = ""
def dec2base(n,b):
global result
if n <= 0: return
result = str(n % b) + result # why am I prepending it?
dec2base(n // b, b)
if __name__ == '__main__':
dec2base(1000,8)
print result
Теперь, если база ничего> 9 (скажем, 16), вы должны позаботиться о переводе значений от 10 до 15 в альфа-аф, и это целенаправленно не очень элегантно, потому что я хотел, чтобы он выкладывался точно так же, как на примере.
Добавьте некоторые операторы печати и смотреть его запустить. Это поможет вам понять, где вы ошибаетесь. – sdolan