Помощь - Поиск - Пользователи - Календарь
Полная версия: Рекурсивная функция
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Гость
Помогите, пожалуйста !!!!
Дана символьная строка, представляющая собой запись натурального числа в р-ичной системе счисления (2 <= р<= 9). Составить программу перевода этого числа в десятичную систему счисления. Нужно сделать, используя РЕКУРСИВНУЮ ФУНКЦИЮ.
klem4
в FAQ есть функция по переводу числа из 10-ой в любую и наоборот, но не рекурсивная, попробуй переделать сам.
Гость
Цитата(klem4 @ 10.05.2007 16:37) *

в FAQ есть функция по переводу числа из 10-ой в любую и наоборот, но не рекурсивная, попробуй переделать сам.


Пробовал переделать , но никак не получается. Возможно нужно делать другим способом. И что за ошибка "Stack overflow error mega_chok.gif " ?
klem4
Мм ну вот проверь это:

function to_dec(const s: String; const p: Byte; const T: Integer): LongInt;
begin
if Length(s) = 0 then to_dec := 0 else
to_dec := (ord(s[Length(s)]) - 48) * T +
to_dec(Copy(s, 1, Length(s) - 1), p, T * p);
end;

begin
writeln(to_dec('1202', 3, 1));
end.


в примере перевод числа '1202' из троичной
volvo
Цитата
Пробовал переделать , но никак не получается.
В следующий раз приводи свой способ...

Вот так перевод в 10 с/с делается рекурсивно:
function ToDecR(n:string; radix:longint):longint;
const digit: string[16] = '0123456789ABCDEF';
begin
if length(n) = 0 then ToDecR := 0
else
ToDecR := ToDecR(copy(n, 1, length(n) - 1), radix) * radix +
pos(n[length(n)],digit) - 1;
end;

Гость
БОЛЬШОЕ СПАСИБО!!! good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.