Перевод с двоичной системы счисления, в десятичную рекурсией - PascalABC.NET
Формулировка задачи:
Доброго времени суток, натолкните на идею, нужно написать рекурсивную программу которая переводит из двоичной системы счисления в десятичную.
Мои мысли по решению: разбить число на цифры, а за тем рекурсией умножать их на пример:
1101 = 1*20+0*21+1*22+1*23.
Но я попал в тупик, после того как преобразовал число в цифры, я не знаю что с ними дальше делать.
Спасибо!
Решение задачи: «Перевод с двоичной системы счисления, в десятичную рекурсией»
textual
Листинг программы
function ToDec(n: string): longint; begin if length(n) = 0 then ToDec := 0 else ToDec := ToDec(LeftStr(n, length(n) - 1)) * 2 + Ord(n[length(n)] = '1'); end; var bin: string; begin readln(bin); writeln(ToDec(bin)) end.
Объяснение кода листинга программы
- Входные данные: строка
bin
, представляющая двоичное число. - Функция
ToDec
принимает строку, представляющую двоичное число, и возвращает десятичное число. - Если длина строки равна 0, то возвращается 0.
- В противном случае, функция рекурсивно вызывается для LeftStr(n, length(n) — 1), умножая результат на 2 и добавляя значение Ord(n[length(n)]), которое равно 1, если n[length(n)] равно '1', иначе 0.
- В основной программе вводится двоичное число, затем вызывается функция ToDec, передавая в неё это число, и результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д