מבוא לתכנות ב- JAVA תרגול 7

Similar documents
מבוא למדעי המחשב תרגול 13: עצים בינאריים

Recursion. Java recursive programming: Writing methods that call themselves to solve problems recursively.

סכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num)

רזח יליגרתו םי יראני ב ם

מבוא לתכנות ב- JAVA תרגול 6

מבוא למדעי המחשב תרגול 12 מחסנית )Stack( memoization

מבוא לתכנות ב- JAVA תרגול 5. Ipc161- practical session 5

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

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays

תוכנה 1 3 תרגול מס' מערכים ומבני בקרה

מבוא לתכנות תוכנית שעור מס. 1 1 דר' דרור טובי, המרכז האוניברסיטאי אריאל בשומרון.

מבוא לתכנות ב- JAVA מעבדה 2

משתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

מצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf("bla\n"); 8. return 0; 9. }

מערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

תור שימושים בעולם התוכנה

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

מבוא לתכנות ב- JAVA מעבדה 4

חוברת תרגילים לתרגול יסודות התכנות

הנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת

תזכורת: עץבינארי מבוא למדעי המחשב הרצאה 24: עצי חיפוש בינאריים

Practical Session - Heap

מבוא למדעי המחשב תרגול 5: לולאות ומערכים

הנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

שאלה 1 מהו הפלט של התוכנית הבאה:

מבוא למדעי המחשב תירגול 3:

תוכנה 1 תרגול 2: מערכים ומבני בקרה

תרגול 6 רקורסיה ותכנות מונחה עצמים

הנכות 1 םוכיס לוגרת 14 1

תכנות מתקדם בשפת C משתנים

קורס תכנות רשימה מקושרת דוגמה: חיפוש מעבר על רשימה דוגמא: שחרור רשימה מקושרת דוגמא: הוספת אברים שלא בהתחלה

תרגילים ופתרונות בשפת - C הסתעפויות

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes

תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב

מבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator

ב ה צ ל ח ה! אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק מיועד לתלמידי : א'

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות

Algorithms. Intro2CS week 5

הנכות 1 םוכיס לוגרת 13 1

תוכנה 1 סמסטר א' תשע"א

Engineering Programming A

קורס תכנות שיעור שני: שימוש במשתנים,

תרגול 4 פונקציות. מבנה של פונקציה: public static <return value type> <function name> (<arg1 type> <arg1>, <arg2 type> <arg2>, ) { <function body> }

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

עקרונות שפות תכנות 2016 תרגול 8 Type Inference System. Substitution Interpreter.

תרגול 7 רשימות משורשרות, רקורסיית

תכנות מונחה עצמים משחקים תשע"ו

הנכות 1 םוכיס לוגרת 13 1

פתרון מוצע לבחינת מה"ט ב_שפת c מועד אביב תשע"ח, פברואר 8102 מחבר: מר שייקה בילו, מכללת אורט רחובות

Advanced Programming & C++ Language

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

מבוא למדעי המחשב 2018 תרגול 7

Amortized Analysis, Union-Find,

3 Dynamic Routing A (RIP and OSPF)

Recursion in Java. Recursion: Recursion is the process of defining something in terms of itself. La Giaconda ( Mona Lisa ) Louvre, Paris.

מבוא לתכנות ב- JAVA מעבדה 3. Ipc161-lab3

מבוא למדעי המחשב תירגול 2: מבוא למדעי המחשב מ' - תירגול 2

$ gcc check.c. $ a.out. $ gcc check.c -o check. $ check. $ gcc -Wall check.c -o check. #include <stdio.h>

Exams questions examples

פתרון מוצע לבחינה בשפת C של מה"ט מועד אביב תשע"ז, פברואר 2017 מחבר: מר עסאקלה שאדי, מכללת אורט בראודה

Computer Programming A תרגול 9

רשימות דילוגים Skip Lists

Communication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner

הפלט אחרי הביצוע של ההוראה :what3(root)

תרגול 3 מערכים ופונקציות

עמוד 1 (תאריך ( âùéä ער äìàù בכל השאלות ניתן להניח שהקלט תקין. 100 íåëñ חורף :

<exp> ::= <define> <cexp> <define> ::= ( define <var-decl> <cexp> ) / DefExp(var:VarDecl, val:cexp)

הוראות חיבור e-port בפרוטוקול Art-Net למערכות תאורה שונות

Simple Web Service. namespace MyService { public class Service1 : System.Web.Services.WebService {

תוכנה 1 תרגול מספר 13

תוכנה 1 תרגול מספר 13

הנדסת תוכנה 11. מבוא לתבניות תיכון. se15b-yagel 1

מבוא למדעי המחשב תרגול 10 הממשקים Iterator, Iterable Binary trees

עצים. מבני נתונים Iterators רשימות מקושרות עצים "רגילות" רקורסיביות

ת ונכת סרוק תורשוקמ תומישר :יעישת רועיש 1

מבוא לתכנות בשפת C. Tzachi (Isaac) Rosen

Practical Session No. 14 Topological sort,amortized Analysis

מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development(

Programming in C תרגול 8

2. (לדוגמא: יחידת הספריה (my_unit.c. #include "my_unit.c" היחידה (חלק ה-.(prototype לדוגמא:. my_unit.h הכותר. הוראת מדעי המחשב, אוניברסיטת תל-אביב

Graph Database, think different!


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

תרגול 3 מערכים ופונקציות

Tutorial 10. Introduction to C++ שימו

מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א. I x > a. פתרון 2: משפט switch

public class B { private int f = 0; public static void main(string[] args) { B b1 = new B(); B b2 = new B(); Object b3 = b1;

Notes - Recursion. A geeky definition of recursion is as follows: Recursion see Recursion.

כתבו קוד ב- 3 קבצי ה hpp (כתבו כהערה את שם הקובץ מעל) כך שהקוד יהיה תקין ובסגנון טוב. אין חובה

Introduction to Programming in C תרגול 8

ASP.Net Web API.

גיליון תשובות מספר נבחן: סעיף ג (10 נקודות) הגדרת בטיחות הינה שמירה על האינווריאנטה של האובייקטים במהלך ההרצה.

מבוא לשפת סי סוגי לולאות שבוע שעבר... תוכנייה. לולאת while דוגמא: קליטת מספר חיובי ד'/כסלו/תשע "ב. משפטי if משפטי switch סוגי לולאות בשפת C דוגמאות

CSCI 135 Exam #1 Fundamentals of Computer Science I Fall 2012

מבוא למדעי המחשב תרגול 10 Comparator, Comparable, Binary Trees

The single cycle CPU

1. An operation in which an overall value is computed incrementally, often using a loop.

מבוא לתכנות מערכות מבחן מועד א' סמסטר חורף

Transcription:

מבוא לתכנות ב- JAVA תרגול 7

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

רקורסיה - הקדמה פונקציה רקורסיבית: פונקציה שקוראת לעצמה באופן ישיר או עקיף )דרך פונקציה אחרת( f(n)=n! דוגמא )הרצאה( : הגדרה איטרטיבית: f(n)=1*2* *n הגדרה רקורסיבית: אם n>1 אזי f(n) = f(n-1) * n אם = 0,1 n אזי f(n)=1

מבנה של פונקציה רקורסיבית.2 פונקציה רקורסיבית מורכבת משני חלקים עיקריים 1. תנאי עצירה: מקרה/מקרים פשוטים בהם התוצאה לא מצריכה קריאה רקורסיבית לחישוב צעד רקורסיבי: קריאה לפונקציה עם קלט קטן יותר או בעיה פשוטה יותר )הקטנת הבעיה( המקרבת אותנו לתנאי העצירה לצורך חישוב התוצאה המוחזרת

Recursive addition public static int add(int a, int b) { if(b == 0) return a; if(b < 0) return add(a-1,b+1); return add(a+1,b-1); קריאה רקורסיבית עם בעיה מוקטנת מקרי בסיס a b 5 2 6 1 7 0 a b 5-2 public static void main(string[] args) { 4-1 int x=reader.nextint(); // 5 int y=reader.nextint(); // 2 System.out.println(add(x,y)); 3 0 // main 5

Recursive subtraction public static int sub(int a, int b) { if(b == 0) return a; if(b < 0) return sub(a+1,b+1); return sub(a-1,b-1); קריאה רקורסיבית עם בעיה מוקטנת מקרי בסיס a b 5 2 4 1 3 0 5-2 public static void main(string[] args) { 6-1 int x=reader.nextint(); // 5 int y=reader.nextint(); // 2 7 0 System.out.println(sub(x,y)); //main 6 a b

חילוק מספר נשתמש בפונקציות הרקורסיביות sub(a,b) ו- add(a,b) כדי לחשב רקורסיבית חילוק של מספר שלם במספר שלם. ראשית נרשום את מקרי הבסיס: public static int divide(int a, int b) { if(b == 0) return 0; if(a < b) return 0; if(b == 1) return a;...

public static int divide(int a, int b) { if(b == 0) return 0; if(a < b) return 0; if(b == 1) return a; return add(1, divide(sub(a,b),b)); חילוק רקורסיבי מקרי בסיס קריאה רקורסיבית עם בעיה מוקטנת Divide(6,3) 2 a 6 b 3 add(1, 1); =2 add(1, divide(sub(a,b),b)); Divide(3,3) 1 a 3 b 3 add(1, 0); =1 add(1, divide(sub(a,b),b)); Divide(0,3) 0 a 0 b 3

חילוק רקורסיבי public static int divide(int a, int b) { if(b == 0) return 0; if(a < b) return 0; if(b == 1) return a; return add(1, divide(sub(a,b),b)); מקרי בסיס קריאה רקורסיבית עם בעיה מוקטנת add(1, 1); =2 1 add(1, 0); =1 0 2 Divide(21,10) a 21 b 10 Divide(11,10) a 11 b 10 Divide(1,10) a 1 b 10 add(1, divide(sub(a,b),b)); add(1, divide(sub(a,b),b));

רקורסיה הדדית public static boolean iseven(int n) { boolean ans; if (n == 0) ans = true; ans = isodd(n - 1); return ans;?iseven(4) public static boolean isodd(int n) { boolean ans; if (n == 0) ans = false; ans = iseven(n - 1); return ans; איזה קריאות יהיו לנו עבור

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

פתרון - סכום ספרות של מספר מקרה בסיס: סכום הספרות של מספר עם ספרה אחת הוא המספר עצמו הקטנת הבעיה 123165 public static int sumdigits(int num){ if (num < 10){ return num; return sumdigits(num / 10) + (num % 10);

דוגמת הרצה sumdigits(234557) sumdigits(234557) 26 public static int sumdigits(int num){ if (num < 10){ return num; return sumdigits(num / 10) + (num % 10); sumdigits(23455) + 7 19 sumdigits(2345) + 5 14 sumdigits(234) + 5 9 sumdigits(23) + 4 5 sumdigits(2) + 3

תרגיל מה יודפס עבור כל אחת מן התוכניות הבאות? public static void print1(int n){ if (n == 0){ System.out.println(n); { print1(n-1); System.out.println(n); public static void main(string[] args){ print1(4); public static void print2(int n){ if (n == 0){ System.out.println(n); { System.out.println(n); print2(n-1); public static void main(string[] args){ print2(4);

פתרון מה יודפס עבור כל אחת מן התוכניות הבאות? public static void print1(int n){ if (n == 0){ System.out.println(n); { print1(n-1); System.out.println(n); public static void main(string[] args){ print1: 0 1 2 3 4 print1(4); public static void print2(int n){ if (n == 0){ System.out.println(n); { System.out.println(n); print2(n-1); public static void main(string[] args){ print2: 4 3 2 1 0 print2(4);

תרגיל- מעקב אחר פונקציה רקורסיבית מה הפונקציה הבאה מחשבת? )קלט 5=b,2=a(. לדוגמא: public static int mystery(int a, int b) { int ans; if (b == 0) { ans = 1; if (b % 2 == 0) { ans = mystery(a*a, b/2); { ans = mystery(a*a, b/2) * a; return ans; מבוא למדעי המחשב, בן גוריון 16

פתרון - מעקב אחר פונקציה רקורסיבית מה הפונקציה הבאה מחשבת?: public static int mystery(int a, int b) { int ans; if (b == 0) { ans = 1; if (b % 2 == 0) { ans = mystery(a*a, b/2); { ans = mystery(a*a, b/2) * a; return ans; mystery(2,5) mystery(4,2)*2 mystery(16,1) mystery(256,0)*16 Returns: 16*1*2=32 32=2^5 מבוא למדעי המחשב, בן גוריון 17

מועד א' 2013

מועד א' 2013 פתרון What(0)=1 What(1)=for[0..1]: What(0)=1 What(2)=for [0..2]: what(0)+what(1) = 2 What(3)=for [0..3]: what(0)+what(1)+what(2) = 4 what = 8 What(4)=for [0..4]: what(0)+what(1)+what(2)+what(3) = 8