תשובה
במקום להבין מה קורה ב what-4 בואי נבין תחילה מה קורה ב what-0.
ב what-0 לא נגיע בכלל ללואת ה for כי הפונקציה כבר תחזיר 1 כאשר תגיע ל !n פשוט כי !0 מתחשב ל true.
אז מבחינתנו !0 זוהי קופסה שחורה שאנחנו יודעים מה היא מחזירה.
עכשיו נראה מה קורה ה what-1.
ב what-1 קיימת לולאה שרצה עד n לא כולל n ומפעילה על כל איבר בדרך את what. או במקרה שלנו רצה רק על 0 ומפעילה עליו את what. את התוצאה של זה אנחנו כבר יודעים (קופסה שחורה) ולכן גם what-1 מחזיר 1.
בינתיים:
what-0 יחזיר 0
what-1 יחזיר 1
מה קורה ב what-2 : ירוץ על כל האברים מלבד 2 כלומר יפעיל what על 0 ועל 1 ויחבר את שניהם: what-0 + what-1 = 1+ 1 = 2 (כי אנחנו כבר יודעים ש what 0 מחזיר 0 ו what 1 מחזיר 1, קופסאות שחורות מבחינתנו).
בינתיים:
what 0 יחזיר 1
what 1 יחזיר 1
what 2 יחזיר 2
מה קורה ב what 3: יעבור על כל האברים מלבד 3 ויפעיל עליהם what ויסכם: 1+ 1 + 2 = 4
בינתיים:
what 0 יחזיר 1
what 1 יחזיר 1
what 2 יחזיר 2
what 3 יחזיר 4
ו what 4 יחזיר 4 בדיוק לפי אותו הגיון.