|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.04.2008, 22:14 | #1 |
Регистрация: 28.03.2008
Сообщений: 8
|
Ошибка переполнения стека из-за использования рекурсий
Привет! Мне срочно необходима ваша помощь! Я пыталась вставить рекурсию в функцию, и все никак не получается. При выполнении программа падает с сообщением об ошибке "Error 202: Stack overflow error".
Помогите исправить ошибку, пожалуйста.=) function ToDec(n:string; radix:word):word; var m,i,Func:word; const digit:string[16]='0123456789ABCDEFGHIJKLMNOPQRSTUVW XYZ'; begin m:=0; while n[1]='0' do delete(n,1,1); for i:=1 to length(n) do ToDec:=m*radix+pos(n[i],digit)-1; Func:=ToDec(n[i-1],radix); ToDec:=m+Func; end;
"Я - часть той силы, что вечно хочет зла и вечно совершает благо"(с)
|
01.04.2008, 22:54 | #2 | |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Для начала:
В строке Цитата:
|
|
01.04.2008, 23:00 | #3 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
А зачем вообще рекурсия?
Код:
|
02.04.2008, 00:40 | #4 |
Регистрация: 28.03.2008
Сообщений: 8
|
Ну просто у меня задание - написать программу именно с рекурсией... вот... (
Прога без нее отлично работает.
"Я - часть той силы, что вечно хочет зла и вечно совершает благо"(с)
|
02.04.2008, 07:56 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ты лучше скажи что ты хочеш сделать, помоему ты стратегию неверную выбрал.
I'm learning to live...
|
02.04.2008, 08:04 | #6 | |
Сисадмин
Форумчанин
Регистрация: 28.12.2007
Сообщений: 320
|
Цитата:
2^0+2^1+2^2+2^3+...+2^n Если внимательно посмотреть на выражение, то можно увидеть, что таким же образом представляется двоичное число в десятичном виде... Пример решения подобной задачи с использованием рекурсии можно найти в любой книге по программированию Вот функция: Код:
1)Переменные index:integer; number:string следует сделать глобальными, в подпрограмму передавать length(number); 2) Писал на Делфи, в Паскале нет функции strtoint, ей альтернативой служит процедура val(st,num,code), преобразует строку st в число num, если преобразование удачное code получит значение 0, иначе - код ошибки; и еще одно, функция переводит только с 2-ой по 10-ую системы, чтобы переводило и 11-ую, 12-ую системы и т.д., необходимо поставить в соответствие букве десятичное число... ЗЫ По поводу замечания 2), будем считать это Вашим домашним заданием , проблем, думаю, у Вас не возникнет. Последний раз редактировалось Xardas; 02.04.2008 в 08:41. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите. массив не взамодействует с функцией. какая-то ошибка стека. | koir | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 10.06.2008 08:32 |
Неправильный вывод данных из стека С++ | Cyberex | Общие вопросы C/C++ | 3 | 07.05.2008 16:53 |
Переполнение стека при передачи функциям массивов большой размерности | graphoman | Общие вопросы Delphi | 2 | 07.01.2008 21:47 |
Заполнение стека | inkvizitor | Общие вопросы Delphi | 5 | 08.10.2007 17:01 |