עבור לתוכן
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

פורסם

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

אני מקבל את המספר 12345 ואת הספר 3 אז הפונקציה תחזיר 345.

זה מה שכתבתי:

        public static int filter(int num, int d)        {
int[] arr = new int[howManyDigits(num)];
return filter(num, d, arr, 0);
}


private static int filter(int num, int d, int[] arr, int i)
{
if (num == 0)
return 0;


int digit = num % 10;
int res = num / 10;
if (digit >= d)
{
arr[i] = digit;
return filter(res, d, arr, i + 1) + digit;
}
else
return filter(res, d, arr, i + 1);
}

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

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

פורסם

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

פורסם
  • מחבר

אוקיי חשבתי על זה אבל המקומות במערך שנשארו ריקים - יש בהם אפסים

פורסם

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

פורסם
  • מחבר

הדרך היחידה שחשבתי עליה היא עם מערך, איך אפשר בלי ?

פורסם

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

פורסם
  • מחבר

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

פורסם

אוקיי, אפשר גם "לקצץ" את המספר המקורי עצמו.

פורסם
  • מחבר

שניצל, פתרתי את זה בדרך אחרת, אפשר בבקשה לראות את הדרך שלך ?

פורסם
int filter(int n, int d) {
if (n == 0) return 0;
if (n%10 >= d) {
return filter(n/10,d)*10 + d;
} else {
return filter(n/10, d);
}
}

פורסם
  • מחבר

תודה רבה.

ארכיון

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

דיונים חדשים

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.