Рекурсия: различия между версиями
Содержимое удалено Содержимое добавлено
Karagota (обсуждение | вклад) |
|||
Строка 29:
Есть способ решить проблему повторных вычислений. Он очевиден — нужно запоминать найденные значения, чтобы не вычислять их каждый раз заново. Конечно, для этого придётся активно использовать память.
[[Изображение:fibtree2.jpg]]
Например, рекурсивный алгоритм вычисления чисел Фибоначчи легко дополнить тремя «строчками»: 1) создать глобальный массив <math>FD</math> , состоящий из нулей; 2) после вычисления числа Фибоначчи <math>F(n)</math> поместить его значение в <math>FD[n]</math>; 2) в начале рекурсивной процедуры сделать проверку на то, что <math>FD[n]=0</math> и, если <math>FD[n]\ne 0</math>, то вернуть <math>FD[n]</math> в качестве результата, а иначе приступить к рекурсивному вычислению <math>F(n)</math>.
|