Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Как научиться придумывать алгоритмы и решать задачи?

Коллеги, у меня есть реальный шанс увеличить з/п, если внутри компании переведусь в разработку на Java.
Собственно, сам синтаксис не вызывает сложности. У меня другая проблема: не умею решать задачи. Почти всегда, за исключением фигни типа "вывести массив/матрицу", "найти min и max число" и т.п.
Вот, сегодня попалась задача:
Написать программу, которая запрашивает число N и выводит первые N чисел последовательности
Фибоначчи (N первых чисел: 0, 1, 1, 2, 3, 5, 8, ...)
Я вообще только узнал, что такое число Фибоначчи. Но как с этим работать - без понятия. Смотрю на условие задачи и как идиот, ничего в голове родить не могу. И так всегда. Синтаксис языка Java, как инструмент, я освоил, но пользоваться этим инструментом не умею. Я не умею решать задачи... У меня проблемы с абстрактно-логическим и алгоритмическим мышлением.
Такое лечится? Решил изучать математику с 7 по 11 класс. Возможно, это поможет прокачать мозг... Также хотел приступить к алгоритмам и стр-рам данных Н. Вирта, но понял там очень мало. Не хватает пререквизитов - базовых знаний по математике и правильно настроенных мозгов.
Помогите советом! Премного благодарен!

По дате
По рейтингу
Аватар пользователя
Высший разум
3мес

Начни с учебников программирования для начинающих:

Вирт, "Алгоритмы и структуры данных"
Кормен, "Алгоритмы. Вводный курс".

И нет, школьная математика не поможет. Нужна дискретная математика. Целые числа, матлогика, множества, графы и т.д. - это всё подразделы дискретной математики.

Что касается чисел Фибоначчи, то тут удобнее всего использовать динамическое программирование: когда мы движемся от старта к финишу, на каждом шаге вычисляя новое значение:

1234567
 F[0] = 0
F[1] = 1
F[2] = F[0] + F[1]
F[3] = F[1] + F[2]
F[4] = F[3] + F[4]
...
F[N] = F[N - 2] + F[N - 1] 
Аватар пользователя
Мыслитель
3мес

Решайте задачки по программированию. Начинайте с лёгких

Аватар пользователя
Искусственный Интеллект
3мес

Ну так это и есть изучение программирования. А язык программирования - всего лишь система условных обозначений для записи того, что в голове у программиста :) Читай книги по алгоритмам.

Аватар пользователя
Мастер
2мес

Я считаю, что как-никак задача математическая, и чем лучше знаешь математику, тем легче будет её решить.

Когда будешь уже работать, задачи будут скорее всего нематематические, а в другой сфере. И вот в этой сфере будешь постепенно совершенствоваться.

Ну и, как мне видится, в программировании фактор интеллекта (текучего) очень важен. Желательно бросить курить, ограничить потребление алкоголя, хорошо высыпаться, ограничить плохой стресс и прочее.

Слышал точку зрения, что после определённого возраста (лет 50 вроде) уже очень трудно заниматься программированием из-за снижения уровня здоровья. Так же, как трудно в этом возрасте играть в шахматы.

Ну и ещё, когда у меня не получается решить такую задачу, когда я прекращаю пытаться решить, я смотрю ответ и не просто запоминаю шаблон, а думаю, КАК Я ДОЛЖЕН БЫЛ МЫСЛИТЬ, ЧТОБЫ ЕЁ РЕШИТЬ. В чём была моя недоработка в мышлении, под каким углом я не посмотрел на задачу, под которым мог бы посмотреть. Что мне учесть и как мыслить, чтобы лучше решать и другие задачи.
Не знаю, понятна ли мысль, наверно, лучше на конкретном примере объяснять)

Аватар пользователя
Мастер
3мес

Если совсем 0, то Грокаем алгоритмы прочитай, очень хорошая книжка