Алгоритмы и Структуры Данных. Урок 1: Введение. Числа Фибоначчи.

  Рет қаралды 128,204

alishev

alishev

Күн бұрын

Пікірлер: 161
@alishevN
@alishevN 6 жыл бұрын
КУРС ПО GIT: www.udemy.com/course/git-alishev/?referralCode=71994763964B8E2E6A4E
@caspianniko8555
@caspianniko8555 3 жыл бұрын
i know im asking randomly but does anyone know of a way to log back into an instagram account..? I somehow lost my account password. I appreciate any assistance you can offer me
@midnight_essay
@midnight_essay 6 жыл бұрын
Спасибо огромное, что начал еще и этот курс, я и не надеялся, что после андроида и EE останутся силы на алгоритмы) Очень жду уроков по всем курсам, ужасно благодарен за труд)
@olgasukhova777
@olgasukhova777 4 жыл бұрын
И я также:)
@vadimoff22
@vadimoff22 5 жыл бұрын
Когда вы стали в начале видео говорить о том, что первый способ примитивный и банальный и самый такой который в первую очередь приходит в голову, то я ожидал услышать именно этот вариант, который вы показали вторым, мне бы никогда в голову не пришло бы вычислять число Фибоначчи каким-то другим способом, а уж тем более рекурсивным... Я ожидал услышать какою-то мега крутой и секретную формулу (алгоритм), а оказалось все так просто и банально.... Это как взять поставить стакан с водой перед человеком и сказать выпей его и он бы взял трубочку стал использовать и затратил бы большее количество времени, чем если бы просто взял в руку и в пару гладков выпил бы её)) Видео отличное, но концовка неожиданная ))
@lowlight1063
@lowlight1063 Жыл бұрын
Что сказать, Вадим, вы красавчик, вы крутой, вы ахуенный, а вот я подумал в первую очередь про рекурсивное решение. Я даже не думал, что это настолько плохо и не задумывался над тем, что этот алгоритм совершает много дубликатов в своих вычислениях. Понимаете кто то рождается с пониманием того что можно сделать глоток воды без трубочки, а кто то пъёт из трубочки, потому что другого не знает
@shukhratkasimov6791
@shukhratkasimov6791 3 жыл бұрын
Все уроки отличные. Пересмотрел все уроки канала. Подход уроков просто шикарный. До этого смотрел много уроков, но всегда оставалось чувство неполноты. После уроков автора все стало на свои места. Очень благодарен автору за огромный труд. Ты №1.
@claypresent6422
@claypresent6422 6 жыл бұрын
Только не смей перестать!
@igorshishikin7647
@igorshishikin7647 5 жыл бұрын
Боже, это то что я так долго искал. alishev спасибо тебе огромное, продолжай снимать такой же качественный контент.
@ernestmyrmyr9932
@ernestmyrmyr9932 4 жыл бұрын
прям идеальное дополнение к книге "Грокаем алгоритмы"! Спасибо !
@wildjoe6259
@wildjoe6259 6 жыл бұрын
Спасибо за Вашу работу!!!
@ИванАлешечкин-б8к
@ИванАлешечкин-б8к 3 жыл бұрын
Наиль, ты лучший! Спасибо тебе что ты есть!
@alisaholainen6334
@alisaholainen6334 4 жыл бұрын
Спасибо большое. Именно, с Фибоначчи я начинала изучение алгоритмов. Ваше видео было чУдным дополнением к моим знаниям
@babkenromyan6129
@babkenromyan6129 5 жыл бұрын
Доброе время суток, большое спасибо за урок! Более подробного и доступного объяснения я не нашел нигде!
@rudikshul25
@rudikshul25 Жыл бұрын
Второе решение которое вы продемонстрировали выглядит очень простым по сравнению с первым , по крайней мере для восприятия . Спасибо за видео !
@RuslanZinovyev
@RuslanZinovyev 6 жыл бұрын
Огромное спасибо за такой полезный материал, с нетерпением ждем продолжения. Очень важная тема.
@alexeystambulzhan
@alexeystambulzhan 6 жыл бұрын
очень хорошо объясняется, всё понятно, просмотрел все java курсы и купил новые на udemy, спасибо
@Tokamame
@Tokamame 5 жыл бұрын
Отличная подача материала! Спасибо большое.
@АлександрКожевников-ь2о
@АлександрКожевников-ь2о 3 жыл бұрын
Наиль Спасибо вам огромное, все очень понятно объясняете, одно удовольствие изучать АиСД по вашим урокам)
@igorkudryk2199
@igorkudryk2199 6 жыл бұрын
Спасибо за алгоритмы, надеюсь выйдет больше видео на эти темы :)
@retropiligrim
@retropiligrim 6 ай бұрын
Спасибо тебе автор. Вкатываюсь в бэк с фронта и ты очень помогаешь.
@alexanderwicked8990
@alexanderwicked8990 6 жыл бұрын
Отлично! Очень ждал материал именно по алгоритмам. Спасибо большое!
@lowlight1063
@lowlight1063 Жыл бұрын
Думал смотреть курс от индийского мужчины, но он первые 5-10 видосов обьясняет что то, а Вы сразу пишете код, что по моему намного лучше. Вы без лишних слов, а просто десятком строчек кода заинтересовали меня в том, что нужно посмотретоь весь плейлист. Я когда увидел разницу во времени экзекуции метода, я просто охуел. Спасибо
@crataegus2653
@crataegus2653 2 ай бұрын
спасибо человечище!
@ByTheKema
@ByTheKema 6 жыл бұрын
Наиль, спасибо большое, ждал)
@denistalko6585
@denistalko6585 3 жыл бұрын
Отличный урок! Спасибо огромное! Очень понятно объясняете.
@Chaevnicher
@Chaevnicher 6 жыл бұрын
число 1 000 000 000: твой алгоритм с массивами выполняется 23-31 сек, а если использовать три переменные - 3-5 сек) ```go var d int _, _ = fmt.Scanf("%d", &d) var a int64 = 0 var b int64 = 1 var c int64 = 0 for i:= 0; i < d; i++ { c = b b += a a = c } fmt.Println(a) ``` при 10 000 000 000 вариант с переменными выполнился за 13.233214662s твои массивы заполнили всю оперативную память (8гб) и 15гб памяти на ssd: Process finished with exit code 137 (interrupted by signal 9: SIGKILL) пам-пам! вот она сила алгоритмов на практике))
@CrownlessX
@CrownlessX 6 жыл бұрын
Я вот чёт тоже думал про переменные, а не массивы.. но, тем не менее, надо смотреть на логичность задачи. Кому понадобится 10 000 000 000 элемент чисел фибаначи?) BTW, такое число в лонг не запихать. БигИнт надо какой то.... Но опять же - где логика таких задач?)
@Chaevnicher
@Chaevnicher 6 жыл бұрын
боюсь твой вопрос в корне неправильный. мы здесь вроде как примеры реализаций рассматриваем, а не логичность задач. данная реализация например говорит нам о том, что если нет необходимости хранить ненужные данные, лучше их не хранить.
@CrownlessX
@CrownlessX 6 жыл бұрын
Спору нет, хранить может и не стоит... но вопрос всё ж логически постановке задачи. Почему ты тогда не протестировал поиск гуголплексового значения?) Всё ж это больше выглядит, как - некчему докопаться, докопись до орфографии. Тут рассматривается ВАРИАНТЫ решения алгоритмов, а не единственное возможное. Вариант с хранением данных может пригодится в том случае, если мы постоянно будем числа искать - простая модификация и никаких вычислений в будущем.
@skazhenyy_enot_
@skazhenyy_enot_ 4 жыл бұрын
бл, в шоке от твоего говнокода. Логика норм. Но названия. Блевануть мля.
@NoName-ec4wg
@NoName-ec4wg 4 жыл бұрын
inp, array = int(input()), [0,1] for i in range(1, inp): array.append(array[i] + array[i-1]) print(array) ------------------------------- Как это выглядит на питоне с использованием списка в 3 строки) Базару нет, можно и с переменными, но все зависит от поставленных задач (тобишь от диапазона чисел). Да и видео вроде как называется не "самый эффективный алгоритм для решения задачи чисел Фибоначчи", если вы читали название:) Здесь PoC обьясняется и ради этого я сюда зашел как бы, алгоритм я для себя напишу и подберу уже сам. Темболее что это и логично, потому что ты хранишь все возможные числа до N в одном типе данных, по этому оно так оперативу и хавает, лол. Или может на ассемблере перепишем раз на то пошло? :D
@isomurodovaziynat669
@isomurodovaziynat669 2 жыл бұрын
Здравствуйте. Спасибо большое за уроки.
@Andrzej3935
@Andrzej3935 3 жыл бұрын
"Тип int у нас перекрутился несколько раз..." - улыбнуло) Спасибо за прекрасные уроки!
@andreyevlash725
@andreyevlash725 3 жыл бұрын
Вот ещё вариант: private static long fibEffective2(int n) { if (n
@TezkaTszyu
@TezkaTszyu 2 жыл бұрын
О, я как раз задал вопрос "зачем массив в плане памяти, 2*long против n*long" и уведел ваш комментарий 👍
@АсланбекЕлбосынов
@АсланбекЕлбосынов 2 жыл бұрын
@@TezkaTszyu +
@adekakz9794
@adekakz9794 Жыл бұрын
тоже самое, но без массива. В массиве хранить данные удобнее, согласитесь
@Artem_35_
@Artem_35_ 6 жыл бұрын
Спасибо большое! Очень интересно и доступно и отдельное спасибо за 1440p60! Очень жаль что на Udemy всего 720р... И подумайте о том, что бы прикрутить к своим видео тут какую-то донат-платформу. Думаю многие бы благодарили, каждый в меру своих возможностей.
@Nexn0n
@Nexn0n 3 жыл бұрын
Простой и понятный пример. Алгоритм можно ещё больше оптимизировать. Недавно в универе дали задание найти n-ое число Фибоначчи за время O(log n). А это уже бинарное возведение в степень и матрицы)
@ivantyshchenko61
@ivantyshchenko61 3 жыл бұрын
Спасибо за видео! По поводу затрат памяти, я бы в массиве хранил только предыдущие 2 числа
@ДмитрийВоробьёв-э1н
@ДмитрийВоробьёв-э1н 2 жыл бұрын
Можно делать это и без массива, переменными
@ДенисКрылов-л3х
@ДенисКрылов-л3х 2 жыл бұрын
Спасибо за видео, очень доступно
@ПетрДанькин-ф2с
@ПетрДанькин-ф2с 6 жыл бұрын
как всегда, все доходчиво и интересно
@karensrapyan845
@karensrapyan845 4 жыл бұрын
private static long fibEffective(int N) { long a = 0; long b = 1; long sum = 0; for (int i = 0; i
@MsDima9999
@MsDima9999 4 жыл бұрын
maby i dont ubderstend something but if I put 10 in this method it returns 144 but not 55 What is wrong?
@karensrapyan845
@karensrapyan845 4 жыл бұрын
@@MsDima9999 my function just shows some apprach for sum and as u see I wrote return sum or b which means I didnt tested that. The only info from my code u need to take it is using 3 vars
@chupnmsk
@chupnmsk 3 жыл бұрын
your algorithm is good, but it will return a number that will be 2 numbers from the desired one, because the loop starts at 0.
@trrt9756
@trrt9756 2 жыл бұрын
спасибо за урок!
@denzzero8920
@denzzero8920 5 жыл бұрын
Благодарю, хорошо объяснил.
@vladbasov8863
@vladbasov8863 3 жыл бұрын
Написал данный алгоритм (Effective) на swift, использовал Decimal в качестве типа данных, при n = 100 получил число 354224848179261915075. Это число отличается от результата на видео. Попробовал в инете онлайн калькулятор числа Фибоначи - результат был как в моей проге. Похоже с long такие вычисления не катят.
@vyacheslavtatsianafilipovi5784
@vyacheslavtatsianafilipovi5784 5 жыл бұрын
Подскажите,а в какой последовательности правильнее смотреть ваши курсы? Например, Джава для начинающих,потом Алгоритмы и структуры,потом Продвинутая Джава,а потом уже к примеру Спринг.
@ВикторГусев-н5т
@ВикторГусев-н5т 5 жыл бұрын
Спасибо! Очень понятно!
@РадикГимадиев-ч3и
@РадикГимадиев-ч3и 5 жыл бұрын
Спасибо за урок! Подскажите, пожалуйста, как настроить Idea так, чтобы вверху над рабочей областью высвечивалось имя метода, в котором находится курсор, как у Вас в этом видео?
@ДанилЯнчук-ч4щ
@ДанилЯнчук-ч4щ 2 жыл бұрын
Можно же выполнить задачу и без массива используя три переменных и перезаписывавать их. Так мы не сохраняем последовательность чисел посчитанных но по идее памяти меньше будет использовано та и запоминать последовательность и не нужно
@aleksey8405
@aleksey8405 Жыл бұрын
Согласен. Нам достаточно выделить память лишь под массив из 3-х элементов, а не n+1. arr[0] - это будет F-2, arr[1] - это будет F-1, arr[2] - будет само число Фибоначчи. И в конце каждой итерации надо будет копировать значение arr[1] в arr[0], а значение arr[2] в arr[1]. И снова вычислять число Фибоначчии, т.е. arr[2] на основании этих двух значений (arr[0] и arr[1]). И тогда память также тратиться не будет. Но автор, в любом случае, молодец.
@TezkaTszyu
@TezkaTszyu 2 жыл бұрын
А зачем массив, если можно 2 предыдущих значения хранить в 2х переменных и в результате выдавать сумму? Ну в плане памяти 2*long против n*long
@roman8735
@roman8735 6 жыл бұрын
Спасибо отличное видео, жду ещё!! )))
@alekseyshibayev5243
@alekseyshibayev5243 6 жыл бұрын
Привет друг, ты супер полезную работу делаешь, однако, на данном этапе, я хочу тебе сказать что фибоначчи 100 не влезает в long ((2^64) -1)
@ruslanvolovik2745
@ruslanvolovik2745 4 жыл бұрын
Как же не используется память при рекурсивном варианте если все равно же стек очень сильно забиваеться, а стек это же структура данных - то что хранит данные в памяти
@pochan1585
@pochan1585 5 жыл бұрын
А если написать следующий код(на js), он сделан с рекрсией, но вычисляет так же быстро let a = 0, b = 1, c = 0, k = 1; function fibonachi(n) { c = a + b; k++; a = b; b = c; if(k == n) { console.log(c) } else { fibonachi(n); } } fibonachi(1300)
@karenjantv2302
@karenjantv2302 3 жыл бұрын
Это гениально
@yourownazog8069
@yourownazog8069 6 жыл бұрын
Шикарный урок
@kensaitakeso
@kensaitakeso 11 ай бұрын
The 100th Fibonacci number is 354,224,848,179,261,915,075. Since 100 is relatively large, it would take quite a bit of time and calculation to find the 100th Fibonacci number using our recursive formula. не помещается 100е число в лонг. если весь массив напечатать то видно что под конец вылазят отрицательные числа. наверно бигИнт нужно прикрутить но их складывать плюсом не выйдет
@sorrelofsuccess5513
@sorrelofsuccess5513 Жыл бұрын
Спасибо, мог бы тот же пример продемонстрировать через рекурсию но с кэшированием, тогда бы вопросов в конце не возникло
@Arimototoku
@Arimototoku 6 жыл бұрын
ШикарнО:)
@lulikb7547
@lulikb7547 3 ай бұрын
wow!!! SUPER
@shushanbalayan6267
@shushanbalayan6267 4 жыл бұрын
спасибо, ну я решала эту задачу и без масива, для чего хранить в массиве если просто переопределив a1, a2 задача решается?
@alishevN
@alishevN 4 жыл бұрын
да, можно без массива.
@OrionChrome
@OrionChrome 3 жыл бұрын
Я тоже так сначала решил, до того как видео посмотрел. Просто переопределял x и y на каждой итерации и вычислял их сумму. Ну, думаю, этот способ явно "тупой", так как сразу в голову приходит, посмотрю ка я в видео что же там за умный способ показан, рекурсия наверное. А оказалось всё как раз наоборот.
@aliaskararzykulov2361
@aliaskararzykulov2361 2 жыл бұрын
Спасибо за уроки. а почему когда в аргумент передаем 0 то скидывает ошибку ?ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1.
@olgasukhova777
@olgasukhova777 4 жыл бұрын
Курс купила по яве🤗👌😍
@AndriiRabinovych
@AndriiRabinovych 4 жыл бұрын
мне кажется допущена ошибка в 5:10 , в слайде. F100 = 3736710778780434371, а так то спасибо огромное!
@go_alloman8106
@go_alloman8106 Жыл бұрын
Решение без массива вообще static int fib(int n) { int a = 0; int b = 1; int result=n; for (int i = 2; i
@miapdesign5201
@miapdesign5201 9 ай бұрын
Подскажите пожалуйста, в каком порядке нужно проходить курсы, размещенные у автора на канале? В плейлистах порядок курсов такой: 1. Java для начинающих 2. Android для начинающих 3. Java EE для начинающих 4. Алгоритмы и Структуры Данных 5. Spring Framework 6. Git Полный курс Но я не уверен, что проходить изучение будет правильно именно в таком порядке. Может кто-то знает с высоты собственного опыта?
@costavashchuk7368
@costavashchuk7368 2 жыл бұрын
Наиль, спасибо огромное! Замечательные курсы! Только возник вопрос. Сотое число не помещается в long, помоему. Попробовал long и BigInt, получился разный результат.
@АлексейНицуленко
@АлексейНицуленко 3 жыл бұрын
Здравствуйте, начал осваивать IT с нуля, стараюсь освоить базис (до банального пересматриваю краткий курс информатики 10-11класс), начал с Вашей помощью учить python, понимаю, что нужны алгоритмы, но в первом же видео, вы пишете код на неизвестном мне языке. Хочу параллельно эти дисциплины проходить. Как быть? Нужно сначала бросить python и выучить другой язык? Вопросы может глупые, но все, я думаю, были на моей стадии ;)
@BobrKurvva
@BobrKurvva 3 жыл бұрын
продолжай учить, просто слушай суть. в пайтоне тоже наверняка есть циклы, рекурсия, массивы и примитивы)
@mikegemini9503
@mikegemini9503 2 жыл бұрын
Здравствуйте! Шикардос! Почему этот алгоритм не рассказывают, в учебниках? Рекурсия-рекурсией, но надо (имхо), сразу давать понятия об алгоритмах и вычислении их эффективности. Может, я не те книжки читал. Самоучка, если что.
@programer8
@programer8 Жыл бұрын
Давайте полный курс по Алгоритмам и структур данных для начинающих на udemy
@ИльяХрулев-ь7ц
@ИльяХрулев-ь7ц 2 жыл бұрын
А почему при использовании наивного алгоритма не возникает ошибка - стек овер флоу?
@gevorghovhannisyan7784
@gevorghovhannisyan7784 Жыл бұрын
Не совсем понял рекурсивный метод. Можно по подробнее? Спасибо
@MegaFeel1
@MegaFeel1 6 жыл бұрын
АиСД, вот за это отдельная спсаааа
@Tokamame
@Tokamame 5 жыл бұрын
Возможно в наивном алгоритме было бы уместнее сначала вычислить все числа до N, но это правда уже эффективный алгоритм получился бы)).
@demontaraz
@demontaraz 10 ай бұрын
Я не совсем понял зачем массив? Почему нельзя 2 переменные постоянно переопределять? Возможно по производительности ничего не изменилось бы, но по памяти всяко быстрее
@LitvinenkoBoris-b7z
@LitvinenkoBoris-b7z 2 жыл бұрын
Не обязательно помнить весь массив чисел Фибоначи, достаточно последних 2-х. В таком случае мы добьемся решения задачи за линейное время и константную память
@aleksey8405
@aleksey8405 Жыл бұрын
Только хотел написать то же самое. Нам достаточно выделить память лишь под массив из 3-х элементов, а не n+1. arr[0] - это будет F-2, arr[1] - это будет F-1, arr[2] - будет само число Фибоначчи. И в конце каждой итерации надо будет копировать значение arr[1] в arr[0], а значение arr[2] в arr[1]. И снова вычислять число Фибоначчии, т.е. arr[2] на основании этих двух значений (arr[0] и arr[1]). И тогда память также тратиться не будет. А если делать так, как сделал автор - то при необходимости вычислить какое-нибудь огромное число Фибоначчи - просто памяти не хватит, и будет краш или типа того. Но в любом случае, видео очень полезное, спасибо большое автору!
@konig231
@konig231 6 жыл бұрын
видео как всегда супер, однозначно лайк. но у меня есть вопрос по fibNaive (11:09). никак не могу понять, почему return fibNaive(n - 1) + fibNaive(n-2); не равен return (n - 1) + (n - 2);. буду очень признателен, если у кого-то появится желание ответить.
@АлександрКозлов-в4в
@АлександрКозлов-в4в 6 жыл бұрын
Может потому что "return fibNaive(n-1) + fibNaive(n-2)" - это рекурсивный вызов? т.е. зайдя в этот метод с неким n > 1, возвратным значением будет снова вызов этого же метода с новым n (один вызов будет n-1, другой n-2, которые в свою очередь о5 вызовут методы). Соответственно результат будет "комом" нарастать. А return (n - 1) + (n - 2) просто вернёт значение, произведя математическое действие. Передав методу параметр 5, он вернёт 7
@RuslanZinovyev
@RuslanZinovyev 6 жыл бұрын
Потому что рекурсии в твоем примере (n - 1) + (n - 2) нет. Ответ будет не верным. А алгоритм для вычисления рекуррентный, поэтому без рекурсии никак. Запись вида fibNative(n - 1) + fibNative(n + 2) рекурсивна, функция вызывает саму себя дважды, рекомендую почитать про рекурсию если не понятно все равно.
@konig231
@konig231 6 жыл бұрын
понял, спасибо!
@konstantindobrinskiy9740
@konstantindobrinskiy9740 6 жыл бұрын
Спасибо! А почему массив брали размером n+1, а не n ? Зачем тут на один размер вперед место еще резервировать?
@alishevN
@alishevN 6 жыл бұрын
Потому что нам надо найти все числа Фибоначчи от 0 до n, где n - аргумент метода. От 0 до n как раз n + 1 чисел Фибоначчи. Например, пользователь вводит 3. От 0 до n - [0,1,2,3] - 4 (n+1) числа Фибоначчи.
@ДмитрийДмитриев-г5у
@ДмитрийДмитриев-г5у 6 жыл бұрын
Блин, нифига не понял.
@alishevN
@alishevN 6 жыл бұрын
В массиве long a = new long[n] при обращении a[n] будет ошибка ArrayIndexOutOfBound, потому что нумерация элементов в массивах начинается с 0.
@MrVakial
@MrVakial 5 жыл бұрын
А почему тело цикла for не в фигурных скобках? Не понимаю. По идее ведь должно ошибку выдать.
@yeson6581
@yeson6581 2 жыл бұрын
Мне искреннее интересно, как Наиль посчитал время вычисления 100-го числа Фибоначчи первым методом? Я забивал в код 50-е число и оно посчиталось довольно оперативно - 43 секунды. Кстати, используйте BigInteger вместо long для правильного расчёта например 100-го числа Фибоначчи и не забывайте про метод сложения - add и valueOf(n).
@kkkaadoanswg
@kkkaadoanswg Жыл бұрын
возведи 43 секунды в 50 степень и удивишься
@dendr576
@dendr576 2 жыл бұрын
Скажите пожалуйста, как реализовать на python Фибоначчи именно списком?
@alexanderlojhkin8997
@alexanderlojhkin8997 4 жыл бұрын
А зачем собственно тратить память на массив, если на выходе у нас только n число, при том что для расчетов нужны только n-1 и n-2, а не вся числовая последовательность, не будет ли более эффективным такой код: long n1=1; long n2=0; long r=0; for (int i=2;i!=n;i++){ r=n1+n2; n2=n1; n1=r; } return r;
@alishevN
@alishevN 4 жыл бұрын
да, вы правы. ваш код еще лучше.
@dentor2005
@dentor2005 4 жыл бұрын
а ты пробовал этот код запустить и сравнить результат, например с он-лайн калькуляторами?
@user-xl2tf4gq1g
@user-xl2tf4gq1g 3 жыл бұрын
нужно заменить i !=n этим i
@ilias3624
@ilias3624 3 жыл бұрын
Не сказал бы, что первый алгоритм более очевидный и наивный, я почему-то сразу подумал именно про второй, был уверен, что он и будет наивным. Интересно было узнать, каким будет продвинутый в таком случае))) Еще вопрос - а что эффективнее с точки зрения скорости и памяти - хранить в массиве все числа или перезаписывать промежуточные результаты в переменных?
@aleksey8405
@aleksey8405 Жыл бұрын
На самом деле, нам достаточно выделить память лишь под массив из 3-х элементов, а не n+1. arr[0] - это будет F-2, arr[1] - это будет F-1, arr[2] - будет само число Фибоначчи. И в конце каждой итерации надо будет копировать значение arr[1] в arr[0], а значение arr[2] в arr[1]. И снова вычислять число Фибоначчии, т.е. arr[2] на основании этих двух значений (arr[0] и arr[1]). И тогда память также тратиться не будет.
@footballlife9931
@footballlife9931 5 жыл бұрын
спасибо
@BillionairesHouse2024
@BillionairesHouse2024 5 ай бұрын
Сделай видео о дереаьях и графах, пожайлуста 😊😊😊
@PimpLable
@PimpLable 6 жыл бұрын
11 -14 строку можно уместить в одну строку через тернарный оператор java.
@ILawrance
@ILawrance Жыл бұрын
Разве у первого алгоритма сложность не 2^N , а у второго N? И именно в этом основная проблема
@bulka6839
@bulka6839 Жыл бұрын
Здравствуйте, это демо или полный курс?
@siegfried_dd
@siegfried_dd 6 жыл бұрын
прошу вас, продолжайте эту тему с алгоритмами..
@alishevN
@alishevN 6 жыл бұрын
На следующей неделе.
@elenoramalygina2796
@elenoramalygina2796 10 ай бұрын
Ареально вообще понять и выучить эти алгоритмы если уже под сорокет а за плечами ток технарь и то непомню уже.
@enered3944
@enered3944 2 жыл бұрын
Объясните пожалуйста, почему длинна массива n+1?
@pandainbyt
@pandainbyt Жыл бұрын
Потому что первый элемент в массиве заполняется нулём
@albertrain7093
@albertrain7093 6 жыл бұрын
Я так и не понял, чесло 0 считать или нет? Если считать, то 5 - получается шестым числом, или 0 - это нулевое число Фибоначи? :) З.Ы. Спасибо за видео!!!
@alishevN
@alishevN 6 жыл бұрын
Можно считать, можно не считать. Даже в википедии приведено два варианта.
@albertrain7093
@albertrain7093 6 жыл бұрын
спасибо большое!
@eugenesmith9940
@eugenesmith9940 Жыл бұрын
при n+1, видимо, не считают (точнее начинают считать с 0. Т.е 0 (это нулевое число), 1 (1-е число), 1 (2-е число), 2 (3-е число) и т.д)
@VitaliyZlobin
@VitaliyZlobin 6 жыл бұрын
То чувство, когда абсолютно не понял как работает "наивный" метод, но если бы нужно было реализовать данную конструкцию, то я бы думал в направлении "эффективного" способа - даже не знаю, хорошо или плохо это)))
@kek_pupold
@kek_pupold 6 жыл бұрын
Мне кажется все так думали, потому что "наивный метод" намного сложнее, там логика извращенная какая-то
@stas4985
@stas4985 5 жыл бұрын
если ты не понял рекурсию то еще придет время и будешь ее пытаться понять
@dragulaxis
@dragulaxis 3 жыл бұрын
@@kek_pupold да там же школьная формула, вы чего.
@kek_pupold
@kek_pupold 3 жыл бұрын
@@dragulaxis я даже не помню про что я писал, нашел когда ответить )
@3x0d7s
@3x0d7s 3 жыл бұрын
Что скажете по поводу моей реализации метода получения числа Фибоначчи? class Fibbonacci{ static final int n0 = 0; static final int n1 = 1; static long toGetNumber(int n){ if (n < 2) return n; else{ long sum2 = n0, sum1 = n1; for(long x = 2; x
@---fq2kd
@---fq2kd 4 жыл бұрын
кролики не только ценный мех!
@MrPe4KiN96
@MrPe4KiN96 6 жыл бұрын
это всё конечно очень хорошо, но что делать если и тип лонг переполнится?)
@alishevN
@alishevN 6 жыл бұрын
Использовать класс BigInteger.
@WaveTheEmeraldDragon
@WaveTheEmeraldDragon 6 жыл бұрын
Спасибо за восхитительные уроки! (Кстати именно при Fn92 он уже переполняется -> 7540113804746346429). Но уроки и правда хорошие. Как досмотрю ютуб - подпишусь на новый курс.
@apterion
@apterion 11 ай бұрын
Тут что-то не так. В 64 битах 20 порядков в десятичном представлении -- у вас 19. В rust мне не удалось 100-е число Фибоначчи вычислить -- упёрся в ограничения unsigned int 64 (в отладочной сборке rust это проверяет). Да, действительно, там переполнение. Пора переезжать на 128 бит)) P.S. Запустил без проверок на переполнение -- результат как у вас стал. Починил!))
@dragulaxis
@dragulaxis 3 жыл бұрын
Посмотрел 6 минут ролика и всё понял, написал прогу с ArrayList, так как F(100) не вмещается в long.
@aliakseidev5390
@aliakseidev5390 3 жыл бұрын
Коммент поддержки
@rigfftreee8190
@rigfftreee8190 5 жыл бұрын
Более эффективный вариант public long getFib(int n) { long ar [] = new long[] {0,1}; for (int i = 2; i
@mashkovvan
@mashkovvan 3 жыл бұрын
Честно говоря рассчет не верный, лонг заканчивается на 92 элементе массива
@MuratFatykhov
@MuratFatykhov Жыл бұрын
Вообще, в среднем вычисление числа Фибоначчи с помощью этого алгоритма занимает 50 тысяч лет 😂 Размотало 😂
@ujin7835
@ujin7835 Жыл бұрын
Тот случай, когда умники сами себя перемудрили. Я бы сразу начал решать путём последовательного складывания чисел, а не по "мудрой" и красивой математической формуле. Пытался как-то составить программу по нахождению простых чисел, чуть не поседел, переводя математическое описание в код! Оказалось, такое число должно делиться без остатка только на само себя и всё!
@ViktorAr2023
@ViktorAr2023 Жыл бұрын
да он с книги все берет) случаино книгу увидел и там то же глава начинается с фибоначи, но там понятнее показано. ведать все его курсы так и сделаны из книг со своей интерпритации. Причем он сложность алгоритма так и не показал как считать)
@lukianhrabchuk3909
@lukianhrabchuk3909 6 жыл бұрын
100-й элемент вычислило за мгновение... Я что-то не так делаю?
@ОлегМосягин-р8й
@ОлегМосягин-р8й 6 жыл бұрын
Очень странный пример. Я всегда считал, что "наивный способ" это как раз такой, когда ты программно воссоздаешь ручной способ проделывания операций. А знание алгоритмов нужно, чтобы сделать все гораздо эффективнее неочевидным способом. Но на видео как раз обратная ситуация. Я специально написал свое решение (с 3-мя переменными, без массива) перед тем, как было показано "наивное" и сильно удивился, когда узнал, что оно было оптимальным. У меня вопрос: зачем изучать алгоритмы, если можно представить ручной способ, а потом просто запрограммировать его?
@maximpanfilov4388
@maximpanfilov4388 4 жыл бұрын
Крутой курс) Что планируется в будущем???
@alishevN
@alishevN 4 жыл бұрын
Разбор задач из собеседований
@АртемДеренчук
@АртемДеренчук 3 жыл бұрын
Заебись, а то что 100-ый элемент нельзя через long посчитать, то похер)))) Число 100-го элемента считается через BigInteger и оно будет немного больше...
@NarkotikAsd
@NarkotikAsd 3 жыл бұрын
function fibona(n){ let art = [n+1]; art[0]=0; art[1]=1; for(let i = 2; i
@eugenesmith9940
@eugenesmith9940 Жыл бұрын
потому что 100-е число Фибоначчи выходит за пределы примитива long. Верхний лимит в данном случае - это 92-е число.
@pertshgalstyan6189
@pertshgalstyan6189 6 жыл бұрын
izmini kachestvo plz
@alishevN
@alishevN 6 жыл бұрын
сейчас должно быть ок
@pertshgalstyan6189
@pertshgalstyan6189 6 жыл бұрын
спасибо. я купил твай уроки в udemy, а невозможно и там повысить качество до FullHD? а то шривти мелковати
@alishevN
@alishevN 6 жыл бұрын
К сожалению, это максимальное качество.
@pertshgalstyan6189
@pertshgalstyan6189 6 жыл бұрын
alishev ок, Спасибо за урок
Что-что Мурсдей говорит? 💭 #симбочка #симба #мурсдей
00:19
小丑教训坏蛋 #小丑 #天使 #shorts
00:49
好人小丑
Рет қаралды 54 МЛН
To Brawl AND BEYOND!
00:51
Brawl Stars
Рет қаралды 17 МЛН
coco在求救? #小丑 #天使 #shorts
00:29
好人小丑
Рет қаралды 120 МЛН
6 важных структур данных
17:25
S0ER
Рет қаралды 93 М.
How To Learn Algorithms? Why? #codonaft
19:22
codonaft
Рет қаралды 585 М.
Программисты-самоучки... Слушайте внимательно.
22:45
Евгений Афанасьев
Рет қаралды 156 М.
Лекция "Числа Фибоначчи. Золотое сечение" (Фестиваль математики 2018)
49:04
Большой новосибирский планетарий
Рет қаралды 7 М.
Что-что Мурсдей говорит? 💭 #симбочка #симба #мурсдей
00:19