עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

שאלה ברקורסיה - משהו עקרוני

Featured Replies

פורסם

זאת השאלה :

כתבו שיטה סטטית רקורסיבית

public static int[] merge (int[] ar1, int[] ar2

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

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

לפתור את השאלה תוך כדי שינוי ar1 ar2 אני משער שאני יכול לפתור

איך אני פותר את השאלה ללא שינוי המערכים הנ"ל ?

פורסם

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

פורסם
  • מחבר

תודה :)

לא שמתי לב שיש לי כבר פיתרון לזה . הנה הפתרון לכל המעונינים

 public class question1
{
public static int[] merge (int[] ar1, int[] ar2)
{
int[] ar3 = new int[ar1.length+ar2.length];
return merge(ar1,0,ar2,0,ar3,0);
}

private static int[] merge(int[] ar1, int ind1, int[] ar2, int ind2, int[] ar3, int ind3)
{
if(ind1 >= ar1.length && ind2 >= ar2.length)
return ar3;
if(ind1 >= ar1.length){
ar3[ind3] = ar2[ind2];
return merge(ar1, ind1, ar2, ind2+1, ar3, ind3+1);
}
if(ind2 >= ar2.length){
ar3[ind3] = ar1[ind1];
return merge(ar1, ind1+1, ar2, ind2, ar3, ind3+1);
}

if(ar1[ind1] > ar2[ind2]){
ar3[ind3] = ar2[ind2];
return merge(ar1, ind1, ar2, ind2+1, ar3, ind3+1);
}
else{
ar3[ind3] = ar1[ind1];
return merge(ar1, ind1+1, ar2, ind2, ar3, ind3+1);
}
}

פורסם

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

פורסם
  • מחבר

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

התשובה היא של סטודנט,ולא של האקדמיה .

ד"א שמת לב שהפתרון צריך להיות ברקורסיה בלבד ? איך התכוונת לתפור את זה ? לא הבנתי .

תודה .

פורסם

התשובה היא של סטודנט,ולא של האקדמיה .

ד"א שמת לב שהפתרון צריך להיות ברקורסיה בלבד ? איך התכוונת לתפור את זה ? לא הבנתי .

תודה .

על merge-sort שמעת?

פורסם
  • מחבר

ברור .. אכן גם פתרון פשוט .

אז אתה אומר שבעולם האמיתי לצורך יעילות היום משתמשים בMERGESORT ולא כותבים קוד שעלול לא להיות יעיל בכלל ? (כמו הדוגמא למעלה )

ד"א אל תיהיה כל כך קפדן ;) זה בסך הכל שאלה מהמבוא , ולא פעם ולא פעמיים דורשים פתרון יעיל . פשוט במקרה הזה לא דרשו .

פורסם

בעולם האמיתי לא ממציאים את הגלגל מחדש. בכל ספריית Foundation נורמלית יש מבני נתונים שמיישמים את כל האלגוריתמים הבסיסיים (מיון, שליפה וכו').

פורסם

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

בכל מקרה כדאי (ולאקדמאים, הכרחי) להכיר את הבסיס.

ציטוט טוב שיסביר את הכיוון הכללי:

I want my ER doctor to understand anatomy, even if all she has to do is put the computerized defibrillator nodes on my chest and push the big red button, and I want programmers to know programming down to the CPU level, even if Ruby on Rails does read your mind and build a complete Web 2.0 social collaborative networking site for you with three clicks of the mouse.

udii - בשביל שלמות כדאי שתכניס קצת בדיקת מקרים קיצוניים לדוגמא אם אחד המצביעים הוא NULL. בתרגיל בית נוטים להוריד נקודות על דברים כאלה (תלוי בקורס).

פורסם

אני מסכים לגבי ה-"פעם ב-"; למרות שזה קורה לעיתים רחוקות מאוד.

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

פורסם

אני מסכים לגבי ה-"פעם ב-"; למרות שזה קורה לעיתים רחוקות מאוד.

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

עניין של דעה ולא ממש רלוונטי לדיון (אתה מוזמן לפתוח אחד אחר), אז הבה נחזור לענייננו.

המטרה של הציטוט היתה לתת נימוק (דרך אנלוגיה) למדוע חשוב ללמד את הבסיס.

במקרה זה, udii הרוויח שלוש פעמים: הוא (היא?) גם למד קצת C ופוינטרים, הוא גם למד קצת רקורסיה, והוא גם למד על אלגוריתם בסיסי למיון שנראה merge sort. פשוט מעולה! (וזו הסיבה שברעיונות עבודה אני שואל על merge sort מדי פעם).

פורסם
  • מחבר

הוא* מתי הראיון הבא ? ;D

סתם סתם אני לא מובטל ....

אבל לא הבנתי איפה יש פה C ופוינטרים ???

פורסם

לא ממש הסתכלתי בעיון על הקוד... :)

עכשיו כשבחנתי אותו, נראה שהרווחת רק פעמיים.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.