Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2010, 21:37   #1
Татьяна Brabus )
Новичок
Джуниор
 
Регистрация: 18.10.2009
Сообщений: 1
Восклицание Какое здесь условие для выхода из рекурсии???

Вот программа....когда запускаешь - вероятно происходит зацикливание...не могу додуматься, какое должно быть условие для выхода из рекурсии.....

Код:
program C7; // Написать рекурсивную программу-функцию
//нахождения наименьшего десятичного натурального
//числа N>1, оканчивающегося цифрой q такого, что если
//перенести эту цифру из конца в начало N, то полученное
//число окажется в q раз больше N.

uses
  SysUtils,
  Math;

procedure recursia(i: integer);
var n,k: integer;
  begin
for n:=1 to 9 do begin
  for k:= 0 to 9 do
  i:=10*n+k  end;
if i= k*10+n then writeln(i)
else recursia(i+1) 
 end;
{$APPTYPE CONSOLE}

begin
   recursia(10);
   readln;
end.

Последний раз редактировалось Stilet; 12.02.2010 в 08:14.
Татьяна Brabus ) вне форума Ответить с цитированием
Старый 12.02.2010, 09:38   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
for n:=1 to 9 do begin
  for k:= 0 to 9 do
  i:=10*n+k  end;
какова по вашей логике задача этого цикла
поскольку по логике транслятора это эквивалентно следующему
i:=10*9+9;(последние итерации циклов (n=9 k=9) или i:=99;

далее значение переменных k т вне цикла (как у вас)
Код:
if i= k*10+n then writeln(i)
else recursia(i+1)
строгого говоря в Delphi является непредсказуемым (может быть каким угодно например -1(минус один) или 999
стало быть почти наверняка выполняется ветвь else, а учитывая i:=99 всяя ваша процедура сводится к простому
recursia(99+1);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 12.02.2010 в 09:47.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какое время для вас самое продуктивное? Hollander Свободное общение 28 11.09.2009 05:50
Какое двигло для игры посоветуете ? Gunet Софт 1 25.07.2009 10:24
какое условие надо поставить?? kostya2 Общие вопросы C/C++ 7 12.05.2009 16:14