Рекурсия
Помогите написать программу в делфи:
Условие: Описать рекурсивную функцию function fib(n : integer) : integer; для вычисления n-ого (n =< 40) числа Фибоначчи. Указание. Последовательность чисел Фибоначчи fk образуется так: f0=1, f1=1, fk = fk-2 + fk-1. Зарания спасибо |
Код:
function fib(n:integer): integer; п.с. счет идет с 0 т.е. 0 -1 1 -1 2 -2 3 -3 4 -5 5 -8 и т.д. хотя в lisp -e это намного изящнее Код:
(defun fibonacci(n) |
примного лагодарен, не могли бы пояснить что выполняет каждая строчка, встречаюсь с этой прроцедурой впервые
|
Цитата:
|
о том что тему рекурсия с трудом понимаю
|
ааа ну рекурсия это вызов функции самой себя некоторое количество раз.
общий принцип построения: ОБЯЗАТЕЛЬНО условие выход из рекурсии Тело рекурсии Вызов этой же функции опять. если "разложить" код приведенный выше для функции fib(3) то получим "переменной" - "функции" после первого прохода возвращается fib(3-1)+ fib(3 - 2) т.е. fib(2)+fib(1) после второго прохода fib(2) переходит в fib(1) - fib(0) a fib(1) просто в 1 дальше fib(1) -> 1 fib(0)-> 1 ну и 1 в общем у нас получается 3 проверяем № 0 1 2 3 числа фиб. 1 1 2 3 как видим мы посчитали реально не для 3-го элемента а для 4-го т.к. номера элементов начинаются с 0 |
Спасибо
|
Часовой пояс GMT +4, время: 06:21. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.