עבור לתוכן

עזרה עם רקורסיה ב-C. (מתחיל)

Featured Replies

פורסם

שלום ליושבי הפורום.

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

הרי היא לפניכם:

A 5-digit positive integer is entered through the keyboard.

using recursion, write a function to calculate sum of digits of the 5-digit number:

והרי הפונקציה שכתבתי:

int DigitSum(int x)
{
int digit=0;

if (x>0)
{
digit+=x%10; /* צבירה של ספרת האחדות */
DigitSum(x/10); /* רקורסיה לאחר שספרת האחדות קוצצה */
}
else
{
return(digit);
}
}

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

מאידך, אינני יכול לוותר על איפוס של digit...

איך אפשר להתגבר על זה, או לכתוב את זה בדרך אחרת?

תודה רבה מראש.

פורסם

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

שים לב שהפונקציה שלך מחזירה ערך, אך אתה לא משתמש בו אף פעם.

פורסם

מה שנאמר הוא נכון, ובנוסף, השורה הראשונה בפונקציה מאפסת את digit אז זה די ברור שזה מה שיקרה...

פורסם
  • מחבר

תודה לשניכם על התגובות! :xyxthumbs:

לאחר מס' רב של ניסיונות כושלים, נכנעתי, וחיפשתי בגוגל את התשובה... :s07:

הנה היא למי שזה מעניין אותו:


int DigitSum(int x)
{
if(x<10)
return x;
return x%10+DigitSum(x/10);
}

לזכותי ייאמר שהייתי די קרוב... :)

פורסם

ברקורסיה אתה תמיד תהיה קרוב.

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

חבל שנכנעת הרי הסברנו לך מה הבעיה ולא הגבת...

ארכיון

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

דיונים חדשים