![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
maksimla |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: ![]() ![]() ![]() |
Фибоначчо числа можно общетать рекурсией. Рекурсивные запросы можно увидить как на двоичном дереве
![]() Можно увидить что некоторые Фибоначчо числа находят несколько раз, что это неэфективно. Напишите функцию на которой каждое фибоначчи число было рекурсивно общитано только один раз о его значение будущим высчитываниям было держано в массиве. непонел что надо зделать и какие значения будут в функцию поступать -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Смотри, что от тебя требуется: сначала пишем обычную рекурсивную функцию, результат работы которой показан в твоем посте:
function fib_1(n: integer): integer; Запускаем ее, и смотрим, что творится: Цитата result = calculating fib_1(7) Видишь, сколько вызовов происходит впустую? А теперь - твоя задача: имея массив, написать такую рекурсивную функцию(с теми же самыми параметрами, функция, вычисляющая Фибоначчи, всегда принимает одно число, и возвращает результат), которая будет брать значение из массива, если оно уже вычислено, тем самым избавляясь от повторных вызовов функции. Вот что выдает моя функция:calculating fib_1(6) calculating fib_1(5) calculating fib_1(4) calculating fib_1(3) calculating fib_1(2) calculating fib_1(1) calculating fib_1(0) calculating fib_1(1) calculating fib_1(2) calculating fib_1(1) calculating fib_1(0) calculating fib_1(3) calculating fib_1(2) calculating fib_1(1) calculating fib_1(0) calculating fib_1(1) calculating fib_1(4) calculating fib_1(3) calculating fib_1(2) calculating fib_1(1) calculating fib_1(0) calculating fib_1(1) calculating fib_1(2) calculating fib_1(1) calculating fib_1(0) calculating fib_1(5) calculating fib_1(4) calculating fib_1(3) calculating fib_1(2) calculating fib_1(1) calculating fib_1(0) calculating fib_1(1) calculating fib_1(2) calculating fib_1(1) calculating fib_1(0) calculating fib_1(3) calculating fib_1(2) calculating fib_1(1) calculating fib_1(0) calculating fib_1(1) 13 Цитата result = calculating fib(7) Чувствуешь, насколько меньше вычислений производится, насколько разгружается стек?calculating fib(6) calculating fib(5) calculating fib(4) calculating fib(3) calculating fib(2) calculating fib(1) calculating fib(0) calculating fib(1) calculating fib(2) calculating fib(3) calculating fib(4) calculating fib(5) 13 А вот как она выглядит - я пока не покажу тебе... Попробуй подумать сам. |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:54 |