![]() |
#7 |
Участник
|
Я знаю, что эта задача является классической.
Разбирается во всевозможных статьях. Начиная от школьных обучающих курсов до многотомника Кнута. Сходу можно привести 4-5 решений. Где-то видал статью с 15 способами. Один из них, где время расчета меньше O(n). рекурсию привести конечно можно. но оговорив область применимости, влияние повторных расчетов на производительность и прочие недостатки. while(true)... му-ха-ха-ха!!!! хороший панк-юмор да, это один из способов решения. в памяти хранятся только два последних значения, повторных вычислений нет, время выполнения линейное. момент, который не оговорен - целочисленные значения. для такого случая было бы хорошо оговорить область применимости ))) в обычных системах, скорее всего, выполнение прервется по переполнению раньше, чем пользователь нажмет CTRL + BREAK/ в аксапте приведенный алгоритм, скорее всего, будет просто выдавать неправильные (отрицательные) значения начиная с некоторого числа, причем достаточно близкого к началу последовательности. если программист не оговорил хотя бы в комментарии область применимости... и не предупредил, что она будет настолько маленькой... с точки зрения аксапты, я бы обратил внимание, что автор использует int2str вместо strfmt. Это была бы тема для дополнительных вопросов. свое мнение не изменил - мне бы тоже не понравилось. Последний раз редактировалось mazzy; 10.02.2017 в 01:05. |
|