|
11.02.2017, 18:57 | #1 |
Участник
|
"Большие числа" - это как раз то, о чем говорил Silence в самом начале
Цитата:
Сообщение от Silence
Кеширование конечно хорошо, но бесполезно. Ибо ряд бесконечен и программа все равно упадет из-за переполнения. Или Вы предлагаете после достижения результата в N-1 знаков, где N = кол-во не влезающее в память, разбивать результат на части и обсчитывать их отдельно, после чего выводить потоком на экран? (Точнее на бумажку, так как предлагалось писать код на листе А4) А потом так же поступать и с отдельными частями результата ибо и они переполнятся. А это рекурсия.
Но я бы очень внимательно смотрел на повторные вычисления и на переполнение. чтобы понять, что кандидат понимает проблему. "на листочке" вполне хватило бы комментария // функция применима для 30-60 первых чисел Наивный рекурсивный код {... result = fib(n-1) + fib(n-2)} делает слишком много повторных вычислений. для "листочка" хватило бы простого кэширования уже полученных чисел. или изящного решения, о котором я конечно же забыл, и которое показал Андре в этой ветке - передается больше параметров в стек, но полностью и ультимативно решается вопрос повторных вычислений в рекурсии. или решения через итерацию и хранение в памяти только двух последних чисел, как показал Ace of Database. Последний раз редактировалось mazzy; 11.02.2017 в 19:14. |
|