Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Рефераты / ФГБОУ ВПО.docx
Скачиваний:
32
Добавлен:
11.12.2015
Размер:
66.86 Кб
Скачать

1.5.5. Числа Фибоначчи

С идейной точки зрения рекурсия аналогична методу математической индукции. Базе индукции соответствует база рекурсии. Предположению индукции соответствует предположение о том, что нужная процедура уже написана. Наконец, шагу индукции соответствует вызов создаваемой рекурсивной процедуры. В любой рекурсии необходимо предусмотреть условие завершения процесса, т.е. когда вызова больше не происходит.

Рассмотрим ещё один пример использования рекурсии – вычисление N-ого по счёту числа Фибоначчи. Числа Фибоначчи составляют последовательность, очередной элемент которой вычисляется по двум предыдущим значениям:

F­n=Fn-1 + Fn-2 .

Нулевое и первое значения должны быть заданы, их значения равны единице. Последовательности такого рода применяются, например, в программах генераторах случайных чисел. Вычисление 20-ого числа Фибоначчи реализовано в программе Fibonacci (Листинг 4). Впрочем, номер числа можно изменить, задав в описании константы другое значение.

Листинг 4. Программа вычисления 20-ого числа Фибоначчи.

program Fibonacci;

uses Crt;

const n=20;

function F(n: word): longint;

begin

  if keypressed then

    halt;

  if (n=0) or (n=1) then

    F:=1

  else F:=F(n-1)+F(n-2); {рекурсивный вызов}

end;

function G(n: word): longint;

var x,y,t: longint; k: word;

begin

  x:=1;

  y:=1;

  for k:=2 to n do

  begin

    t:=y;

    y:=x+y;

    x:=t;

  end;

  G:=y;

end;

begin

  clrscr;

  textcolor(lightgray +128);

  write(‘Считаю...’);

  textcolor(lightgray);

  writeln(‘—Ждите ответа--’);

  writeln;

  writeln(‘Рекурсивный алгоритм : F(‘, n, ’)= ’, F(n));

  writeln;

  writeln(‘Итерационный алгоритм : F(‘, n, ’)= ’, G(n));

  gotoxy(1,1);

  clreol;

  gotoxy(1,7);

  write(‘Нажмите <Enter>’);

end.

В этой программе реализованы два метода решения задачи вычисления числа Фибоначчи. Один назовём итерационным методом – он заключается в прямом программировании итерационной формулы для чисел Фибоначчи. В функции G для этого используются три вспомогательные переменные типа LongInt.

Решение с использованием рекурсивных вызовов запрограммировано с помощью функции F. Оператор, вычисляющий её значение, два раза вызывает саму эту функцию. Текст рекурсивной функции короче, лаконичнее итерационной функции. Процедура ClrEol из модуля Crt удаляет все символы строки от текущего положения курсора до её конца.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ:

1.           Бен-Ари М. Языки программирования. Практический сравнительный анализ: Пер. с англ. – М.: Мир, 2000. – 366 с., ил.

2.           Зуев Е.А. Turbo Pascal. Практическое программирование. – М.: Приор, 1997. – 336с.

3.           Кнут Д. Искусство программирования, том 1. Основные алгоритмы, 3-е изд.: Пер. с англ. – М.: Издательский дом "Вильямс", 2000. – 720 с.

4.           Немнюгин С.А. Turbo Pascal. – СПб.: Издательство “Питер”, 2000. – 496 с., ил.

5.           Немнюгин С.А. Turbo Pascal: практикум – СПб.: Питер, 2001. – 256 с., ил.

6.           Рубенкинг Н.Дж. Турбо Паскаль для Windows: в 2-х томах. Т.1. Пер. с англ. - М.: Мир, 1993. – 536 с., ил.

7.           Рубенкинг Н.Дж. Турбо Паскаль для Windows: в 2-х томах. Т.2. Пер. с англ. - М.: Мир, 1993. – 536 с., ил.

8.           Ставровский А.Б. Турбо Паскаль 7.0. Учебник. – К.: Издательская группа BHV, 2000. – 400 с.

9.           Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. Издание 7-е, переработанное. – М.: «Нолидж», 2000. – 576 с., ил.

10.       Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. Учебное пособие. Издание 7-е, переработанное. – М.: «Нолидж», 2000, - 416 с., ил.

11.       Шелест В.Д. Программирование. – СПб.: БХВ – Петербург, 2001. – 592 с., ил.

Соседние файлы в папке Рефераты