Int Fib ( int n )

{

if ( n == 0 ) return 0;

if ( n == 1 ) return 1;

return Fib(n-1) + Fib(n-2);

}

Заметим, что каждый рекурсивный вызов при n > 1порождает еще 2 вызова функции, многие выражения (числа Фибоначчи для малых n) вычисляются много раз. Поэтому практического значения этот алгоритм не имеет, особенно для большихn. Схема вычисления Fib(5)показана в виде дерева ниже:

 

Заметим, что очередное число Фибоначчи зависит только от двух предыдущих, которые будем хранить в переменных f1и f2. Сначала примем f1=1и f2=0, затем вычисляем следующее число Фибоначчи и записываем его в переменную x. Теперь значение f2уже не нужно и мы скопируем f1в f2и xв f1.








Дата добавления: 2015-10-05; просмотров: 901;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.