Fib1=1; Fib2=2.


Fib1=1; Fib2=2. Рекурсивный вариант программируется здесь “в лоб”, без малейших усилий: function Fib (n : byte) : longint; begin case n of 1: Fib := 1; 2: Fib := 2 else Fib := Fib (n-2) + Fib (n-1) end End; - но стоит внимательнее проанализировать хотя бы небольшой (n=5) тестовый пример, иллюстрирующий последовательные состояния стека, и недостатки сразу проявляются. Если вам прежде не приходилось с этим контрпримером сталкиваться, - стоит выполнить Упражнение #1. a) Установите, сколько всего вызовов функции Fib понадобится и будет помещено в стек при n=5. То же - при произвольном значении n. b) Сколько будет “лишних” вызовов, то есть дублирующих ранее осуществленные? Попробуйте вывести соответствующую зависимость для произвольного значения n. Позднее мы еще вернемся к этому примеру. Пока же - несколько упражнений на использование рекурсии. Упражнение #2. a) Напишите и сравните, с точки зрения отмеченных выше различий, рекурсивный и нерекурсивный
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz