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

לא הולך לי תרגיל ברקורסיה פשוטה שפת C#

Featured Replies

פורסם
  • מחבר

עזוב כבר הסתבכנו. תשמע בוא ניקח דוגמא 453.

השורה הזאת

        return (((n % 10) + MakeSum((n / 10),i,sum)));

עושה ככה:

3+5+4

סבבה. יוצא 12.

עכשיו הבעיה איפה אני מחלק ב-3.

אם לדוגמא אני עושה ככה:

      return (MakeSum(n,0,0)/3);

זה יעבוד. הבעיה שאנחנו לא יודעים שזה 3. ואי אפשר לייבא מהמחלקה MAKESUM את i למחלקה GIVE,נכון?

בשורה של הif אני לא יכול לקבל את הערך ולחלק בi , נכון?

אז איפה לעזזאל אני יכול לחלק בi?

פורסם

אתה כבר מחלק ב-i בשורה של ה-return sum/i. תזכור - אתה צריך לחלק ב-i רק פעם אחת, ולא בכל פעם.

פורסם
  • מחבר

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

פורסם

אוקי, אז אתה צריך לדעת להגדיל את sum בין קריאה לקריאה של הפונקציה, בדיוק כמו שאתה מגדיל את i.

פורסם
  • מחבר

ואיך אני עושה את זה?.... :sleep:

פורסם

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

פורסם
  • מחבר

לזה אתה מתכוון?

return (((n % 10) + MakeSum((n / 10)

פורסם

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

פורסם
  • מחבר

ואללה לא יודע :nixweiss:

אגב הצלחתי לפתור את זה ככה:

  class sum
{
public static int Give(int n)
{

return (MakeSum(n)/MakeDigits(n));
}
private static int MakeSum(int n)
{
if (n<10)
return (n);
else
return ((n % 10) + MakeSum((n / 10)));
}
private static int MakeDigits(int n)
{
if (n < 10)
return 1;
return (1 + MakeDigits(n / 10));
}

}
}

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

פורסם

אוקי, הפתרון שלך סבבה בסך הכל.

אבל רק לשם השלמות:

    public static int MakeSum(int n,int i,int sum)
{
if (n == 0)
return (sum/i);
else
return MakeSum(n/10, i+1, sum+(n%10));
}

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

פורסם
  • מחבר

אה יפה. אהבתי. עכשיו זה ניראה ממש פשוט.

תודה רבה לך :yelclap: :yelclap:

ארכיון

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

דיונים חדשים

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.