Вообще, это нормальная ситуация.)))
Я не понимал доказательства теорем из геометрии, не запоминал их, пока не стал разбивать их на части. докажем 1, докажем второе и т.д. Т.е. человеку что бы разобраться в некой системе нужно разбивать систему на части. Понимать как взаимодействуют эти части. Затем разбивать части на подчасти. и понимать их взаимодействие.
Тоже самое происходит в программировании. функция должна содержать части на одну ступень более низкого уровня чем сама. Человек это хорошо воспринимает и держит в рабочей памяти. Если части на несколько ступеней ниже, то возникает путаница. И сложность.
Для примера математическая индукция:
1+2+3+4... +n = n*(n+1)/2
общий алгоритм состоит из двух частей
есть некие частные аналогичные случаи P.
1. доказываем что если верно P(для числа m), то из него следует P(для числа m+1)
===n(n+1)/2+(n+1) = (n(n+1)+2(n+1))/2 = (n*n+3n+2)/2=(n+1)(n+2)/2
2. доказываем что справедлив начальный случай P(1)
===1(1+1)/2=1
На примере есть общая методология из двух частей. И есть на уровень ниже - доказательства частных формул===.
Так примерно и во всем. Так и надо запоминать решения. Части и взаимодействия. + подчасти и взаимодействия. +...
Для нетривиальных задач работа мозга немного по-другому. немного.
Для дальнейшего понимания как запоминать и решать рекомендую курс
https://www.coursera.org/learn/learning-how-to-learn
он бесплатный, на английском, но с русскими субтитрами.
Ведет его женщина математик, которая признается, что в школе у нее не было никаких способностей к математике. (так она думала)
у нее есть также книга переведенная на русский язык. в курсе есть ссылка.
удачи.