|
1 / 1 / 0
Регистрация: 20.11.2016
Сообщений: 85
|
|
Сформировать и вывести целочисленный массив, содержащий N первых членов последовательности Фибоначчи14.03.2017, 21:34. Показов 2116. Ответов 10
Метки нет (Все метки)
Дано целое число N>2. Сформировать и вывести целочисленный массив размера N, содержащий N первых членов элементов последовательности чисел Фибоначчи FK: F1=1, F2=2, FK=FK-2+FK-1, K=3, 4, 5….
1
|
|
| 14.03.2017, 21:34 | |
|
Ответы с готовыми решениями:
10
Сформировать и вывести одномерный массив, содержащий N первых чисел Фибоначчи Сформировать и вывести массив размера N, содержащий N первых членов данной прогрессии
|
|
Кот форума
9 / 9 / 5
Регистрация: 02.03.2020
Сообщений: 183
|
||||||
| 03.03.2020, 17:38 | ||||||
Выводит то кол-во элементов скок нужно)
0
|
||||||
|
924 / 251 / 100
Регистрация: 21.10.2012
Сообщений: 594
|
|
| 04.03.2020, 01:08 | |
|
0
|
|
|
Кот форума
9 / 9 / 5
Регистрация: 02.03.2020
Сообщений: 183
|
|
| 04.03.2020, 18:03 | |
|
ет да)
0
|
|
| 05.03.2020, 22:45 | |
|
Не по теме: Darkcat112, пожалуйста, не мусорьте по форуму. Если решили что-то опубликовать в древней теме, то публикуйте что-то не тривиальное.
0
|
|
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
|||||||
| 08.03.2020, 23:35 | |||||||
0
|
|||||||
|
Модератор
10383 / 5671 / 3399
Регистрация: 17.08.2012
Сообщений: 17,319
|
|||||||||||||||||||||
| 09.03.2020, 13:57 | |||||||||||||||||||||
|
Mikstereo, ну Вы-то... Вы-то зачем тоже фигню публикуете? На каждой итерации вызов функции с пятью условиями, четырьмя умножениями и двумя делениями, не считая всяких там аддитивных операций... Да ещё и за время O(N*log(N))... Да ещё и "извините за то что не на паскале". Будто бы есть какая-то особенная разница. Что, лень было на паскале написать, что ли? Да ещё и библиотеки не хухёр-мухёр,
#include <iostream> уже не вариант... А зачем Вы объявили MAX=1000000, если программа Ваша только до F(92) посчитать может? И в чём нетривиальность? В самодельной 64-битной арифметике? А вот так
Без ограничения разрядности на Pascal ABC.NET:
С самодельной длинной арифметикой - тоже запросто. На FPC:
0
|
|||||||||||||||||||||
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
|||||
| 13.03.2020, 13:49 | |||||
|
Добавлено через 24 секунды Здесь фишка метода была в том, что все Ваши варианты находят N-е число фибоначчи за O(N), а мой вариант найдет сразу несколько( мемоизация) за O(logN) Добавлено через 43 минуты
0
|
|||||
|
Модератор
10383 / 5671 / 3399
Регистрация: 17.08.2012
Сообщений: 17,319
|
||||
| 14.03.2020, 06:23 | ||||
|
Посчитаем количество цифр в F(1000000000). По формуле Бине где φ = 1.618033988749894848… - золотое сечение. Количество разрядов в натуральном числе равно целой части десятичного логарифма от этого числа плюс 1. Если избавимся от округления до ближайшего целого в формуле Бине путём добавления дополнительной цифры, то количество цифр в F(n) будет не более Получим К ≤ 208987643 десятичных цифр. Будем считать, что все эти цифры - девятки. В предпоследней моей программе применён тип BigInteger. Для двоичного числа, равного 10208987643-1, потребуется не более двоичных разрядов. Тогда для двух чисел BigInteger потребуется не более 166 мегабайт. В последней моей программе в одно число longword помещается 9 цифр результата, и длинных чисел нужно два. Потребуется массив в 23220850 элементов из двух чисел longword, объём массива будет менее 178 Мбайт. Для FPC такой массив - далеко не предел. Иными словами, любая из моих двух программ успешно посчитает F(1000000000), причём на любом компьютере с объёмом оперативной памяти более 600 Мбайт даже не будет использоваться виртуальная память, если, конечно, не запускать других программ. Так что, увы, и ах, но Вы не правы... Правда, любая из двух упомянутых программ будет считать F(1000000000) долго, даже очень долго... ![]() Но всё же посчитает. ![]() На моём стареньком ноутбуке примерно за 8 лет. А на современном навороченном числогрызе и за полгода, может быть, справится, а то и ещё быстрее. С длинной арифметикой, конечно же, ни о каком O(n) даже и речи не идёт... В моей второй программе оценка сверху будет O(n2), поскольку количество итераций будет пропорционально n-ному треугольному числу. Точнее, для F(1000000000) будет сделано всё же не квинтиллион итераций, а примерно 12 квадриллионов. Это миллиардное треугольное число, умноженное на десятичный логарифм золотого сечения, и поделённое на количество десятичных цифр, которое я поместил в longword. Может быть, даже ещё меньше, где-то на десяток миллиардов, из-за моего не вполне корректного допущения, что количество элементов массива "f" растёт пропорционально количеству десятичных цифр в F(n). Добавлено через 3 часа 44 минуты При последовательном вычислении n чисел Фибоначчи (это как раз Вы и делаете) "Ваша" функция fib никакого выигрыша не даёт. У Вас будет примерно 4.5n вызовов функции fib, причём примерно половина из этих вызовов - с одним и тем же аргументом. Хорошо хоть, что только в одном из 4.5 вызовов будет вычисление частного, двух произведений, от 3 до 5 сложений или вычитаний, и четыре чтения из массива, а в остальных - только чтение из массива, ну, может быть, ещё присвоение 1. На каждом вызове при n>2 у Вас также проверяются 5 условий в функции, плюс, ещё одно условие (в данном случае ненужное) в программе (проверка на 0 в строке 22). Да ещё и время на каждый вызов тратится. Так что, в программе у Вас, пусть и очень-очень-очень-очень и очень плохое, но всё же O(n). И программа Ваша значительно медленнее, чем у меня, поскольку у меня на каждой итерации всего лишь одно сложение, одно вычитание, инкремент и проверка одного условия. Всё отличие Вашей программы при последовательном вычислении чисел от стандартного варианта - в вычислении не по обычной формуле, а с помощью известных тождеств, требующих возводить числа в квадрат. Это позволяет несколько выровнять время вычисления чисел до заполнения массива, и замедляет программу. Можно заменить это дело на обычную формулу, будет в конечном счёте значительно быстрее. Если бы "Ваша" функция fib вызывалась для случайных чисел, то вот тогда мемоизация работала бы, и однократный вызов функции из основной программы порождал бы рекурсивные вызовы с вычислением нескольких других чисел. Если число было однажды помещено в массив, то всё будет сводиться к проверке трёх уже не нужных условий, и чтению числа из массива, то есть, будет вычисление числа за плохонькое O(1). Преимущество? Не скажите. Если без всяких премудростей сразу заполнить массив, то после этого числа можно просто читать из массива, без проверки каких бы то ни было условий.
0
|
||||
| 14.03.2020, 06:23 | |
|
Помогаю со студенческими работами здесь
11
Сформировать и вывести целочисленный массив размера N, содержащий N первых элементов последовательности чисел Фибоначчи
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|