Stepping through the code with the
drracket debugger and inspecting the values on the way may also be a
good way to identify areas where your code doesn't work like you had
expected.
Maybe write some more testcases / example applications of your function and see which inputs already work and
which ones do not, thus narrowing down / getting an idea where the
problem is within the code.
You already mentioned recursion, recursion can be used to solve problems that are self similar like how the Sierpiński triangle contains 3 simpler versions of itself.
Instead of thinking how you can create all permutations and then somehow create code for that. How could you create one permutation and then do that multiple times.
Maybe go through the problem yourself manually with 3 different items in physical space, pen and paper, think about what you are doing and what steps you do repeatedly.
If you have more specific questions
ask them, I am sure a lot of people on this list will be interested in
helping you, if you get specific.
This seems like homework
with the purpose of deepening your understanding, so I can't really do
much without ruining your learning experience.
I also don't want to confuse or distract you with too many different perspectives of looking at the problem, you have to find a way of looking at it that works for you.
That said I am self taught and have not a lot of teaching experience, so maybe others have better help or advice for you.
Simon