At least about recursion I can say it only really clicked, after working through part of SICP and The Little Schemer. It is like avoiding to think about the potentially endlessly deep recursion, but thinking about the current level and what the meaning is.
Sometimes however, there will be a recursion, which dumbfounds me as well :) I still feel I improve though. Just the other day I came up with a pair of mutual recursive functions, as if it was nothing, to solve a specific problem, by splitting it into 2 subproblems (or maybe 2 states in an automaton).
Often there is a very clear idea behind a recursion, that, once one has heard it, becomes completely obvious. Maybe not always.
About ZIP: Imagine you wanted to work on 2-tuples made out of pairs of elements from 2 lists. That's what ZIP does. Maybe also works for more than 2 lists, I don't know.
If that imagine about zip was meant to help.. (truly, I do know what zip does. It's what zip does in context. Mapping your mental model of a list to a list of pairs in context is whats hard. And my head doesn't see lists as tuples any more than staring at an integral stops me internally screaming eeeee because giant E)
Sometimes however, there will be a recursion, which dumbfounds me as well :) I still feel I improve though. Just the other day I came up with a pair of mutual recursive functions, as if it was nothing, to solve a specific problem, by splitting it into 2 subproblems (or maybe 2 states in an automaton).
Often there is a very clear idea behind a recursion, that, once one has heard it, becomes completely obvious. Maybe not always.
About ZIP: Imagine you wanted to work on 2-tuples made out of pairs of elements from 2 lists. That's what ZIP does. Maybe also works for more than 2 lists, I don't know.