PracticU

רקורסיה - Recursion (הסבר נוסף)

בלי כתוביותעם כתוביות
PracticU › קורס יסודות התכנות - שפת C# .NET - קורס תכנות למתחילים - דוט-נט / סי-שארפ - חומר לימוד של מדעי המחשב › רקורסיה - Recursion (הסבר נוסף)
מילון מושגים:
רקורסיה - טכניקה שבה פונקציה קוראת לעצמה כדי לפתור בעיה על ידי פירוקה למקרים קטנים יותר.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.

רקורסיה - Recursion (הסבר נוסף)
רקורסיה היא מתודה שקוראת לעצמה. השיעור מסביר את העיקרון בעזרת הדפסת מספרים ומכפלה, ומראה איך כל מופע קורא לעצמו עד לתנאי עצירה.
השלבים העיקריים
1. הדפסת מספרים: המתודה print nums מקבלת מספר ומדפיסה את המספרים מ-1 עד אותו מספר. בכל הפעלה היא בודקת אם המספר גדול מ-0, מדפיסה אותו, וקוראת לעצמה עם המספר פחות אחד.
2. מופעים בזיכרון: כל קריאה לעצמה יוצרת מופע נפרד בזיכרון, עם ערך משלו. הכניסה מתחילה מ-9 ויורדת עד 0.
3. תנאי עצירה: כשהערך מגיע ל-0 המתודה לא קוראת לעצמה שוב ויוצאת. כל מופע שיוצא ממשיך לשורה שאחרי הקריאה.
4. הדפסה ביציאה: אם מדפיסים אחרי הקריאה לעצמה, המספרים יודפסו בסדר הפוך, מ-1 עד 9.
5. מכפלה ברקורסיה: הפונקציה מחזירה את התוצאה ככל מופע. במכפלה של a ב-b, כל מופע מחזיר a ומוסיף אותו לתוצאה של המופע שקרא לו. המופע עם b שווה 1 מחזיר את a עצמו.
פקודות והגדרות
- מכפלה של 4 ב-3 מחזירה 12. הפונקציה משתמשת רק בחיבור ולא בכפל.
שימו לב
- כל רקורסיה אפשר להחליף בלולאה, אבל לפעמים הפתרון בלולאה מסובך יותר. בדוגמת מגדלי האנוי הפתרון הרקורסיבי מורכב מכמה שורות קוד בלבד.
אחרי השיעור אפשר לכתוב מתודה רקורסיבית, לעקוב אחרי הקריאות שלה ולזהות מתי היא מסתיימת.
השיעור הבא בקורס: פרוייקט גמר - קורס יסודות התכנות

פרקי ההרצאה: רקורסיה - Recursion (הסבר נוסף)

  1. 00:00

    מה זו רקורסיה ומתודה שקוראת לעצמה

  2. 00:59

    הדפסת מספרים 1 עד 9 בעזרת רקורסיה

  3. 01:37

    תנאי עצירה ומבנה הפונקציה הרקורסיבית

  4. 06:20

    הדפסה ביציאה מהפונקציה והסדר ההפוך

  5. 08:20

    מעקב אחר הקריאות עם Watch ב-Debugger

  6. 10:32

    סדר הכניסה והיציאה בין הקריאות

  7. 12:48

    מכפלה ברקורסיה באמצעות חיבור בלבד

  8. 14:21

    קריאה לפונקציית המכפלה עם שני מספרים

תמלול ההרצאה: רקורסיה - Recursion (הסבר נוסף)

הטקסט המלא של הדקות הראשונות בהרצאה «רקורסיה - Recursion (הסבר נוסף)» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:19

    טוב חברים בואו נלמד מה זה ריקורסיה, נעשה קונסול אפליקיישן חדש שנקרא ריקורסיה, מה זה ריקורסיה? ריקורסיה זה מתודה שקורית לעצמה.

  2. 00:33

    מתודה שקורית לעצמה, לדוגמה אני אעשה עכשיו static נניח int, פונקציה שמחזירה int, אנחנו רוצים לעשות הדפסה על מסך, אתם יודעים מה, היא לא צריכה להחזיר שום דבר, היא צריכה להדפיס על המסך מספרים 1-9, כן?

  3. 00:58

    תכף אתם תראו, להסביר את זה זה הרבה יותר קשה מאשר להראות את זה. מספרים 1-9, וזה נקרא, נקרא לה print nums. print nums, היא מקבלת איזשהו מספר והיא מדפיסה מספרים 1-9, אוקיי?

  4. 01:13

    לאו דווקא 1-9, 1 עד המספר הזה, אוקיי? יפה מאוד. אז אנחנו רוצים להדפיס מספרים, אז אנחנו נקרא לפונקציה הזאת, נתחיל במספר 9, אני יודע מה, זה לא משנה.

  5. 01:30

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

  6. 01:40

    שזה לא בעיה, כל ריקורסיה אפשר לעשות בלולאה ואני רוצה להראות לכם ריקורסיה. מה עושה ריקורסיה ומה הפואנטה שלה? if num גדול מ-0, אוקיי?

  7. 01:54

    אם num גדול מ-0, תעשה דברים 40 בבקשה. תעשה קונסול רייטליין של num, תדפיס לי את ה-num ושימו לב, תקרא לעצמך, כאילו אתה פונקציה אחרת לגמרי, אבל כאילו תקרא לפונקציה אחרת שבמקרה זה הקופי שלך, אמנם פחות 1. תחשבו שזה כאילו, כאילו קראתי למתודה אחרת, כן?

  8. 02:34

    אז נוצר לי בזיכרון מקום נפרד, כן? תסתכלו, זה קצת קשה להסביר. הנה, אתם רואים, הוא הדפיס לי מספרים מ-9 עד 1, התחיל ב-9, התחיל ב-9, הדפיס לי 9, קרא לעצמו עם 8. נכנס עוד פעם לפה עם 8, אבל זה מופע אחר.

  9. 02:57

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

  10. 03:08

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

  11. 03:31

    כן, היא קוראת לעצמה, נניח קוראים לה f, היא קוראת לעצמה עם num פחות אחת, איזושהי פונקציה שלנו, איך היא נקראת, print משהו, לא חשוב, נקרא לה f, וברגע שהיא קוראת לעצמה שוב, ויש לה קוד גם אחרי זה.

  12. 03:51

    מה שקורה זה שברגע שהיא קוראת לעצמה, אבל עם מספר יותר קטן, התחלנו ב-9, כן? הפעלה ראשונה, num שווה ל-9. עכשיו היא קוראת לעצמה שוב, אבל הפעם, תסתכלו פה, הפעם, ה-num הוא כבר לא 9.

  13. 04:14

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

  14. 04:48

    קורא לעצמך שוב ומייצר מופעים הרבה מובאים של עצמך בזיכרון. נם שווה 7. ו... הבנתם? קוראת לעצמה, קוראת לעצמה, קוראת לעצמה.

  15. 05:02

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

  16. 05:17

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

  17. 05:52

    נכון לזה שקרה לו לשורה הבאה להמשיך לעשות אותה ומסיים ומה זה מסיים במקרה הזה אחרי שקראו לי וחזרתי לשורה הבאה זה שורת סיום אז הוא מתחיל פשוט לצאת כי אין פה שורה הבאה אז הוא יוצא הוא יוצא הוא יוצא ובסוף מסתיימת התוכנית פשוט פה אין לי את השורות האלה השורות האלו פה ריקות

  18. 06:21

    אחרי קריאה לפונקציה השורות אצלי ריקות מוכנים לראות פה אחרי קריאה לפונקציה השורות אצלי ריקות מה היה קורה אם הייתי עושה ככה אז הוא היה עושה 987 מגיע לאפס וכשהוא היה יוצא הוא היה מתחיל להדפיס ביציאה מה זה ביציאה הוא היה מדפיס לי 1 2 3 זאת אומרת למעשה הוא היה מדפיס לי 1 עד 9 קלטתם?

  19. 06:53

    כשהוא נכנס, 1 עד 9. כשהוא נכנס, הוא נכנס 9 עד 1, כי הוא כל פעם מוריד 1, אבל כשהוא יוצא, הוא יוצא בדיוק ברוורס מה שנקרא.

  20. 07:04

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

  21. 07:18

    ברגע שאני מדפיס ביציאה, אני מדפיס לא כאן למעלה, 9, 8, 7, 6. אני אחרי שהוא מגיע לאפס ומתחיל לחזור חזרה אני מדפיס פה 1. פה כשהוא סיים את ה-1 והוא חזר ל-2 אני מדפיס פה 2, 3. כל פעם שאתה יוצא אני מזנב בך להדפיס ואז יוצא שאתה בעצם כל הכניסה שלך לא הדפסת כלום נכנסת נכנסת נכנסת

  22. 07:44

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

  23. 08:03

    הוא נכנס, נכנס, נכנס, נכנס. שנייה, אני אראה לכם הכל ביחד. הוא נכנס, נכנס, נכנס, נכנס לעצמו. אתם יודעים מה? אני אפילו אראה לכם את זה פה ב-Locals.

  24. 08:16

    בואו נעשה F11. הוא מתחיל Add Watch, יופי. אתם רואים? הוא מתחיל, איפה ה-Watch שלי? הוא מתחיל את הפונקציה עם תשע. עכשיו הוא קורא לעצמו עם שמונה.

  25. 08:37

    זה קופי אחר בזיכרון. שלא תחשבו שזה אוטו קופי, זה קופי אחר בזיכרון, אוקיי? יופי, יופי, מה יש לך? הוא מתחיל בתשע, אה, זה הפלט שלנו, זה הפלט שלנו, סליחה, הפלט שלנו, הבנתי עכשיו איפה הבעיה, יופי, זה ככה, חבל שמתחתי את זה טיפה,

  26. 09:07

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

  27. 09:36

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

  28. 09:52

    מי קרא לאפס? אז זה של אחד קרא לאפס. אז הוא חזר לזה של אחד, אתם רואים? נ"ם שווה אחד. ומדפיס אותו במעמד היציאה.

  29. 10:02

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

  30. 10:12

    ואז תסתכלו פה, תסתכלו פה במסך למעלה. אתם רואים? הוא כל פעם מדפיס, אתם רואים? ביציאה את ה-4, 5, 6.

  31. 10:25

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

  32. 10:43

    תסתכלו עכשיו, אתם רואים? הוא נכנס עם 2321 הוא נכנס נכנס נכנס ואז יוצא יוצא יוצא אוקיי אלס בוא נעשה פה איזשהו אלס זה אומר שכאילו נאם לא גדול מאפס קונסול רייטליין זירו איזה יופי יצא לנו הנה אתם רואים הוא נכנס נכנס נכנס הוא נכנס נכנס נכנס הדפיס לנו מספרים בכניסה כל אלו

  33. 11:34

    הודפסו בכניסה כל פעם קרה לעצמו עם הכניסה cm הגיע לזירו נכנס לתנאי היצירה שלנו הדפיס 0 יצא החוצה התחיל לצאת התחיל להדפיס את כל אלו בסדר הפוך זה נקרא רקורסיה זה ככה שתבינו את החלק הקל בואו נעשה עכשיו עם רקורסיה נעשה עם רקורסיה מכפלה אתם יודעים מה נעשה מכפלה נעשה עכשיו ברקורסיה מכפלה אז זה נקרא נקרא לזה רקורסיה אחד בואו נעשה רקורסיה נוספת נסגור את

  34. 12:15

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

  35. 12:58

    זה פשוט הרבה יותר מסובך הלוגיקה של רקורסייה היא יותר מורכבת אבל אבל הפתרון של רקורסי יכול להיות יותר פשוט מאשר פתרון בלולה.

  36. 13:07

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

  37. 13:39

    אנחנו נעשה console right line איזה שהם מספרים בואו נעשה איזה שהם מספרים int x שווה לא יודע מה 4 int y שווה 3 console right line x כפול x כפול y שווה x כפול y שווה לmultiply למכפלה לפונקציה אנחנו נקרא לפונקציה עם x פסיק y כאן בסדר?

לקורס המלא: קורס C# למתחילים אונליין

ההרצאה הקודמת: רקורסיה - Recursion

ההרצאה הבאה: פרוייקט גמר - קורס יסודות התכנות

הרצאות קשורות מקורסים אחרים

  • Writing Recursion
  • הסבר נוסף על SSH
  • Properties של Class (הסבר נוסף)
  • הסבר נוסף על Port Security

קורסים נוספים במסלול

  • קורס פיתוח משחקים יוניטי - Unity - שפת #C