Хочу научится писать алгоритмы и шевелить мозгами не подсматривая
Чтобы научиться шевелить мозгами, нужно в первую очередь ими буквально шевелить(я намекаю на самостоятельность). Вы же противоречите сами себе: хочу научиться шевелить мозгами, не подсматривая в чужие алгоритмы, пойду-ка я спрошу на тостере!
Напишите функцию и вызывайте её рекурсивно, по мере надобности, это первое, что приходит в голову. Чтобы самостоятельно в голову пришло что-то иное, нужно либо тупо сидеть над одной задачей иррациональное время, либо
практиковать(это то слову, к чему я вас склоняю) что угодно. По мере наращивания опыта придут и другие самостоятельные решения.