Size: a a a

2021 November 01

М

Михаил in Kotlin JVM
Ну или так :)
источник

ПФ

Паша Финкельштейн... in Kotlin JVM
Я на достаточно больших числах считал и ыло врое корректно (сравнивал с вольфрамом). Там конечно же Floor надо
источник

AN

Alexander Nozik in Kotlin JVM
К слову, я до сих пор считаю, что дизайн листов и массивов - один из главных проколов котлин. Скопировали джавовый лист со всеми его проблемами.
источник

ПФ

Паша Финкельштейн... in Kotlin JVM
Как я понимаю фибоначчи выражается какой-то штукой, называемой "рекуррентное соотношение". Не знаю что это, но оно выражается формулой )
источник

М

Михаил in Kotlin JVM
Потому что была такая изначальная идея, хотя можно доделать еще в set или map
источник

AN

Alexander Nozik in Kotlin JVM
Массив должен явно наследовать List. И должен быть базовый интерфейс random-access, не реализующий Iterable
источник

AN

Alexander Nozik in Kotlin JVM
Рекуррентный - это однокоренное с рекурсией. Ты не можешь вычислить текущий элемент, не вычислив предыдущие.
источник

ПФ

Паша Финкельштейн... in Kotlin JVM
А рекуррентное соотношение?
источник

AN

Alexander Nozik in Kotlin JVM
Ну так оно и есть. Соотношение между последующими элементами и предыдущими
источник

RE

Roman Elizarov in Kotlin JVM
Вообще Фибоначчи точно и быстро можно считать за логарифм операций через быстрое возведение в степень матриц https://e-maxx.ru/algo/fibonacci_numbers
источник

VS

Vladimir Sitnikov in Kotlin JVM
Это «количества умножений матриц» там будет логарифм.
А *одно* умножение матриц требует 8 умножений длинных чисел, каждое из которых требует N^2
источник

AN

Alexander Nozik in Kotlin JVM
Умножение матриц дешевле с точки зрения CPU за счет префетча, правда не сильно.
источник

VS

Vladimir Sitnikov in Kotlin JVM
Я что? Против умножения матриц что-ли?

Я говорю про то, что даже одно простое умножение длинных чисел это уже N^2, а таких умножений надо будет сделать несколько (8штук для каждого умножения 2x2 матриц)
источник

AN

Alexander Nozik in Kotlin JVM
Ну там надо заоптимизировать, но шило на мыло, да.
источник

AN

Alexander Nozik in Kotlin JVM
Там в принципе делается оптимизация, за счет которой на маленьких числах используются лонги в место бигинтов.
источник

VS

Vladimir Sitnikov in Kotlin JVM
в int помещается где-то 40 чисел. Значит, long’а перестанет хватать уже на 80ом числе
источник

AN

Alexander Nozik in Kotlin JVM
Ну да, но если человек всерьез считает Фибоначи дальше, значит он или делает что-то не то, или спортивный программист.
источник

AN

Alexander Nozik in Kotlin JVM
В свое время сделал очень изящное решение для подсчета длинных хвостов распределения, там как всегда факториал на экспорненту. Все считали в лоб и выходили за точность, а я сделал как раз итеративное вычисление с кэшированием и там были конечные числа
источник

DK

Denis Kalinochkin in Kotlin JVM
Умножение длинных чисел это N log N по последним данным
источник

BV

Boris Vanin in Kotlin JVM
Очень интересная тема для поффтопа, предлагаю там продолжить
источник