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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2009, 09:18   #1
agarum
Пользователь
 
Регистрация: 17.06.2009
Сообщений: 10
Лампочка Помогите с рекурсией

Я никак не могу понять как действует рекурсия? помогите пожалуйста на следующих примерах:
1. Задача: вывести на экран элементы массива в обратном порядке
2.Задача: с помощью рекурсии выполнить следующий алгоритм:
Sn = 1/1!+ 1/2!+.....+1/n! (здесь n вводится с компа)
agarum вне форума Ответить с цитированием
Старый 17.06.2009, 18:15   #2
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Дорбрый день уважаемый agarum. На самом деле рекурсия - это не смертельно))). По поводу вашей первой задачи:
допустим у вас есть массив a;
Код:
Procedure UnrollArray(index,ArraySize:word)
begin
if (index<ArraySize) then UnrollArray(index+1,ArraySize);
Writeln(a[index]);
end;
При вызове из программы нужно указать начало массива и его размер.
Поясню как работает рекурсия:
Если функция вызывает сама себя то:
1. Работа данной копии функции приостонавливается до тех пор, пока не отработает вызванная копия
2. Вызванная копия использует другие переменные (если конечно они не глобальные, или не передаются как параметры)
Рекурсия поможет там, где можно разбить задачу, на ряд мелких подзадач с одинаковой структурой.
По поводу второй задачи: Она является стандартной рекурсивной задачей.
Код:
Function factor(n:byte):longint
Begin
 if (n=0) then  factor := 1  else
factor  := n* factor (n-1);
End;
Function row(n:byte):real
Begin
If n>1 then row:= 1/ row(n-1) else row:=0;
End;
Функция row вычисляет ряд длиной n.
Не переусердствуйте с n. Факторил 10 = 3628800; Факториал 20 = 2432902008176640000. Вот и думайте))
Вот и все. К сожалению, у рекурсии есть один недостаток: неэкономное использование памяти (в связи с многократным копирование переменных)
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 19.06.2009, 00:28   #3
agarum
Пользователь
 
Регистрация: 17.06.2009
Сообщений: 10
По умолчанию

большое спасибо ) разобрался )
agarum вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите разобраться с рекурсией с++ l.e.n.a Помощь студентам 1 10.02.2009 20:32
Помогите с рекурсией biv171 Помощь студентам 1 02.11.2008 10:36
Помогите с рекурсией Serejka Общие вопросы Delphi 1 25.07.2008 15:36
Помогите плз с Рекурсией Dendy Паскаль, Turbo Pascal, PascalABC.NET 4 03.02.2008 22:44