האמת שזה פלא שאתה בכלל מקבל משהו הגיוני
חזרה!
ברוב המקרים, הפונקציה שלך לא תחזיר כלום, כי חסר לך משפט return.
הערך החוזר של המקרה האחרון ברקורסיה לא מפעפע אוטומטית למעלה.
כל מעבר ומעבר בפונקציה חייב לבצע return בתורו.
אבל, בקוד שלך אחרי ה-if האחרון יש עוד שורת קוד (האחרונה בפונקציה), שבה יש קריאה רקורסיבית, אבל אין return.
כלומר, הפונקציה שלך למעשה מתעלמת מהערך החוזר של הקריאה הבאה בתור, וגם לא מחזירה כלום.
בגלל הצורה שהמחשב עובד, תקבל איזשהו מספר כאילו הוא ערך חוזר, אבל למעשה זה מספר יחסית אקראי שהיה במקום מסוים במחסנית.
(הוא לא באמת אקראי, הוא תלוי בצורה שבה הפונקציה שלך משתמשת במחסנית).