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

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול
Advertisements

מבוא למדעי המחשב מערכים.
מבוא כללי למדעי המחשב תרגול 1. כתיבת התוכנה כתיבת התוכנית עצמה נעשית ע " י כתיבת קובץ טקסט רגיל אשר תוכנו מקיים את כללי שפת C כתיבת התוכנית עצמה נעשית.
פונקציונל פונקציה מספר פונקציונל דוגמאות לא פונקציונל פונקציונל.
עיבוד תמונות ואותות בעזרת מחשב
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
נושאים מחרוזות מיון (מיון בועות) רקורסיה
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
רקורסיות נושאי השיעור מהן רקורסיות פתרון רקורסיות : שיטת ההצבה שיטת איטרציות שיטת המסטר 14 יוני יוני יוני 1514 יוני יוני יוני 1514.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
11 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מבוא לשפת C תרגול 12: עוד רקורסיה
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מבוא כללי למדעי המחשב שיעור 5
תכנות תרגול 2 שבוע : צור קשר מתרגל – שי גוטנר, ביה " ס למדעי המחשב. מתרגל – שי גוטנר, ביה " ס למדעי המחשב. דואר אלקטרוני : דואר.
תכנות תרגול 3 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 5 שבוע : לולאות for לולאות for for (counter=1 ;counter
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מבוא כללי למדעי המחשב תרגול 5. חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
מבוא למדעי המחשב תרגול 6 - מערכים שעת קבלה : יום שני 11:00-12:00 דוא " ל :
The Cyclic Multi-peg Tower of Hanoi מעגלי חד-כווני סבוכיות הפתרון בגרסאות עם יותר מ-3 עמודים.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
תכנות תרגול 4 שבוע : לולאות for לולאות for for (counter=1 ;counter
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
תכנות בשפת C תרגול 15 תרגול חזרה 2 תרגילים ממבחנים
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
מבוא למדעי המחשב תרגול 5 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
Sscanf example #include int main () { char sentence []="Rudolph is 12 years old"; char str [20]; int i; sscanf (sentence,"%s %*s %d",str,&i); printf ("%s.
פונקציות ורקורסיה. פונקציות פונקציה: קטע קוד בעל שם ייחודי המבצע פעולה ניתן לקרוא לפונקציה במסגרת main (או במסגרת פונקציה אחרת) על ידי כתיבת שמה והפרמטרים.
1 מבוא למדעי המחשב רקורסיה. 2 רקורסיה היא שיטה לפתרון בעיות המבוססת על העיקרון העומד ביסוד אינדוקציה מתמטית: אם ידועה הדרך לפתור בעיה עבור המקרים הבסיסיים.
1 מבוא למחשב שפת C תרגילי חזרה. 2 תרגיל 1 : מחשבון קלט : תרגיל חשבוני המורכב ממספרים שלמים עם פעולות חשבוניות ביניהם. התרגיל מסתיים ב =. אפשריים רווחים.
Costs and Filters Dr. Avi Rosenfeld Department of Industrial Engineering Jerusalem College of Technology
מבוא למדעי המחשב הרצאה 9: תכנות רקורסיבי 2 1. חישוב עצרת: רקורסיית זנב public static int fact (int n){ return factacc(n,1); } public static int factacc.
C Programming.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
C Programming.
Programming Arrays.
Computer Architecture and Assembly Language
מבוא למדעי המחשב סיבוכיות.
רקורסיות קרן כליף.
רקורסיות קרן כליף.
מצביעים קרן כליף.
תירגול 14: מבני נתונים דינאמיים
לולאות קרן כליף.
תרגול מס' 7: Memoization Quicksort תרגילים מתקדמים ברקורסיה
Computer Programming Summer 2017
מבוא כללי למדעי המחשב תרגול 4
מערכים של מצביעים הקצאה דינאמית
Introduction to Programming in C
נושאים מחרוזות מיון (מיון בועות) רקורסיה
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Computer Architecture and Assembly Language
Presentation transcript:

תרגול 5 רקורסיות

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

רקורסיה דוגמא void star() { printf(“*”); star(); return; } בפונקציה star : מודפסת כוכבית ואח " כ מתבצעת קריאה לפונקציה star(), כלומר קריאה רקורסיבית מתי הפונקציה תסתיים ?

רקורסיה ואם היינו כותבים את הפונקציה star() כך ? void star() { star(); printf(“*”); return; } הפונקציה נשארת רקורסיבית אבל עכשיו הקריאה הרקורסיבית מתבצעת לפני הדפסת הכוכבית מה יקרה כעת ?

רקורסיה למעשה, נרצה להדפיס מספר מסויים של כוכביות ולא " אינסוף " תנאי עצירהלכן, נוסיף לפונקציה תנאי עצירה void star(int i) { if( i < 1 ) return; printf(“*”); star(i-1); return; } בכל פונקציה רקורסיבית חייב להיות תנאי עצירהבכל פונקציה רקורסיבית חייב להיות תנאי עצירה

רקורסיה נוח להבין פעולת פונקציה רקורסיבית כאשר מדמים כל קריאה רקורסיבית כ " העתק " חדש של אותה פונקציה ( למרות שזה לא מה שקורה בפועל ) למשל, הקריאה star(3)star(3); [i = 3] if(i<1) return;printf(“*”);star(2); [i = 2] if(i<1) return;printf(“*”);star(1); [i = 1] if(i<1) return;printf(“*”);star(0); [i = 0] if(i<1) return; return;

רקורסיה ישנן בעיות שהפתרון עבורן בנוי על פתרון בעיה פשוטה יותר מאותו סוג, וזה המקום להשתמש ברקורסיה מגדלי הנוידוגמא לכך היא מגדלי הנוי האלגוריתם הכללי עבור n טבעות יהיה : –העבר n-1 טבעות מ -A ל -B. –העבר את טבעת מספר n מ -A ל -C. –העבר n-1 טבעות מ -B ל -C.

רקורסיה void Hanoi (char a, char c, char b, int n) { if(n<=0) return; Hanoi(a,b,c, n-1); printf(“\nMove ring %d from %c to %c\n”,n,a,c); Hanoi(b,c,a, n-1); return; } הקריאה לפונקציה תהיה, למשל : Hanoi(‘A’,’B’,’C’,3);

רקורסיה מה יודפס בכל אחת מהפונקציות כשנבצע את הקריאה הבאה : Print(5); ? פונקציה 2: void Print(int n) { int i; if(n<1) return; for(i=0;i<n;i++) printf(“*”); printf(“\n”); Print(n-1); return; } פונקציה 1: void Print(int n) { int i; if(n<1) return; Print(n-1); for(i=0;i<n;i++) printf(“*”); printf(“\n”); return; }

רקורסיה תרגיל :תרגיל : כתבו פונקציה אשר קוראת מהמשתמש מילה ( רצף תווים שנגמר ב -enter) ומדפיסה אותה הפוך. למשל : עבור הקלט :abcd יתקבל הפלט :dcba