עבור לתוכן

פונקציה רקורסיבית בC++

Featured Replies

פורסם

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

הוראות לתרגיל:

עליכם ליצור מערך דו מימדי בגודל 5X6 המכיל מספרים אקראיים בתחום 1 עד 10 . את המערך הינכם יכולים להגדיר בצורה גלובלית.

הדפיסו בצורה מפורמטת את המערך.

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

הצהרת הפונקציה תהיה void monotonic(int,int) .

כל סדרה תודפס בשורה נפרדת.

אתם יכולים להסביר לי איך פתרתם כי העיניין של הרקורסיה חדש לי

מי שצריך צירפתי את התרגיל גם בקובץ

תודה לעוזרים.

[attachment deleted by admin]

פורסם

תתפלא אבל דווקא החלק הבעייתי הוא להדפיס ולא המעבר עצמו.

נתחיל מהמעבר:

אפשר להסתכל על המבנה כסוג של עצים עם 3 בנים וצמתים משותפים. ולכן אפשר לעבור על זה כאילו היו 5 עצים. זאת בהנחה שאתה יכול לקרוא לפונקציה הרקורסיבית 6 פעמים (עבור כל תא בשורה הראשונה). אם לא אתה תמיד יכול בסוף הרקורסיה להוסיף אם אתה בשורה הראשונה ועדיין לא בעמודה האחרונה תעבור תא ימינה. לגבי גוף הרקורסיה, שם לב בכל שלב שאתה בודק שאתה לא יוצא מגבולות המטריצה! תבדוק אם התא משמאל-למטה, למטה או הימני-למטה מקיימים את התנאי, דיינו קטן שווה מהנוכחי. עבור כל אחד מהם, אם הוא מתקיים, אתה צריך לקרוא לרקורסיה עם האינדקסים שלו. ברגע שהגעת לשורה האחרונה אתה יודע שיש לך סדרה מונוטונית. הבעיה עכשיו היא איך מדפיסים.

הדפסה:

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

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

  • 1 שנה מאוחר יותר...
פורסם

גדי לא לימד ברור?

ארכיון

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

דיונים חדשים