כותב |
|
Benny אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 12 September 2006 בשעה 18:35 | | IP רשוּם
|
|
|
|
קוד:
int func(int x) { if (x>10) func(x-1); return x; } |
|
|
למה הקוד הנ"ל, מחזיר לי את המספר שאני מכניס, במקרה שהוא גדול מ10 ? למשל אני מכניס 29 זה מחזיר לי 29. כשהוספתי הדפסה:
קוד:
int func(int x) { if (x>10) func(x-1); printf("%d\n",x); return x; } |
|
|
זה הדפיס לי את כל המספרים מ10 עד 29 (כש X היה שווה 29.) מה אני יכול לעשות ? הפונקציה אמורה לבדוק אם המספר גדול מ10 אם כן היא מורידה אותו ל 10. והיא חייבת להיות רקורסיבית.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 12 September 2006 בשעה 18:37 | | IP רשוּם
|
|
|
|
שים לב שאמרת לו: ואין לו שום סיבה להפסיק לפני זה או להחזיר ערך אחר.
נראה לי שבמקום:
אתה צריך:
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
Benny Ezra אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 12 September 2006 בשעה 20:54 | | IP רשוּם
|
|
|
|
קוד:
int func(int x) { if (x>10) return func(x-1); else return x; } |
|
|
למה זה לא מסתדר עם קלט מעל 4900 ? זה אומר שגיאה שאני עושה debug unhandled exception at 0x... in SchoolWork.exe: 0x... : Stack overflow
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 12 September 2006 בשעה 21:18 | | IP רשוּם
|
|
|
|
חח...כל פעם שאתה פותח עוד קריאה רקורסיבית הוא דוחף לאיזה מחסנית את המצב של הרבה דברים, יש גבול לכמה הוא מוכן לשמור במחסנית הזאת.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
Benny Ezra אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 September 2006 בשעה 07:10 | | IP רשוּם
|
|
|
|
האם יש דרך להיפטר מבעיה הזו ?
|
חזרה לתחילת העמוד |
|
|
אורח אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 September 2006 בשעה 07:51 | | IP רשוּם
|
|
|
|
תבנה מחסנית משלך או שתשתמש בטיפוס מוכן של מחסנית, ותנסה לעבוד בלי רקורסיה רקורסיה זה לא טוב כשיש משתנים והרבה זכרון בשימוש :|
|
חזרה לתחילת העמוד |
|
|
Benny Ezra אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 September 2006 בשעה 13:19 | | IP רשוּם
|
|
|
|
תודה על העזרה, אז עדיף להשתמש בייחוס ? במקום ליצור משתנה חדש? זה יעבוד עם הרבה ?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 13 September 2006 בשעה 14:52 | | IP רשוּם
|
|
|
|
זה עוזר אבל עדיין לא ממש...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|