עזרה עם שאלה

pilot23

New member
עזרה עם שאלה

שלום,
אני מצרפת תרגיל+פתרון ואשמח אם תוכלו להסביר לי איך הגיעו לפלט שהגיעו... לא כל כך הצלחתי לעקוב אחרי הפונקציה.

תודה!
 

פרסאוס

New member
תתרכזי בלולאה, שם הפיתרון

תנאי העצירה של הלולאה מקטין את הקריאה לערך כל פעם ב 1.
עבור 0 הפונקציה מחזירה 1 וחוזרת...
את השאר תצטרכי להבין לבד.
 

pilot23

New member
את זה אני יודעת, מה שאני

מסתבכת איתו זה הקריאות הרקורסיביות וה- sum שאני לא מבינה מהעניין שהוא תמיד מתאפס בהתחלה.
 

פרסאוס

New member
אין לי מה להרחיב מעבר למה שכבר כתבתי

אלא אם תסבירי מה בדיוק את לא מבינה
 

pilot23

New member
תשובה

בסך הכל רציתי שמישהו יעבור איתי על איטרציה אחת, כדי שאראה איך הפונקציה מתנהגת ושאמשיך לבד עם האיטרציות הבאות.
 

ברנדל

New member
תשובה

במקום להבין מה קורה ב 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 בדיוק לפי אותו הגיון.
 
למעלה