הייתי מסתכל על זה ככה:
המשימה היא להציב n מלכות על הלוח, כך שהן לא יאיימו אחת על השניה. הצעד הרקורסיבי - הצב מלכה אחת במקום הפנוי האפשרי הבא. הקריאה הרקורסיבית - תן לפונקציה הבאה את אותה משימה, רק שעכשיו היא צריכה להציב n-1 מלכות, ובנוסף, מספר המקומות הפנויים להצבה קטן בגלל הצעד הקודם. ואל תשכח שיש פה גם backtracking נפלא...