Перевод с двоичной системы счисления, в десятичную рекурсией - 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.

Объяснение кода листинга программы

  1. Входные данные: строка bin, представляющая двоичное число.
  2. Функция ToDec принимает строку, представляющую двоичное число, и возвращает десятичное число.
  3. Если длина строки равна 0, то возвращается 0.
  4. В противном случае, функция рекурсивно вызывается для LeftStr(n, length(n) — 1), умножая результат на 2 и добавляя значение Ord(n[length(n)]), которое равно 1, если n[length(n)] равно '1', иначе 0.
  5. В основной программе вводится двоичное число, затем вызывается функция ToDec, передавая в неё это число, и результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы