רקורסיה

רן המלך2

New member
רקורסיה

דורשים מאיתנו לממש שיטה רקורסיבית ללא שימוש בלולאות שתקבל 2 מספרים שלמים, נניח 4 2 ותדפיס את המבנה : ** *** **** **** *** ** השורה הראשונה תכיל M כוכביות, השניה M+1 ..וכך הלאה, עד N, לאחר מכן שורה של N-1 כוכביות וכו'. אני לא מוצא שום דרך לפתור את הבעיה ללא שימוש בלולאות. מישהו יכול לעזור לי ?
 

vinney

Well-known member
אם אתה עושה את זה ברקורסיה

אין סיבה שתהיה לך ולו לולאה אחת. איזה אלגוריתם יש לך בראש ?
 

רן המלך2

New member
זה

שתי פונקציות
f(m+1,n) f(m,n-1)​
ולולאה בתוך לולאה, כשבשלב הראשון הלולאה תקרא את M,M+1 וכו' עד N ובשלב השני N-1, עד M.
 

רן המלך2

New member
בקוד סימלי, משהו כזה:

f(m,n) for (i=1;i<=m;i++){ print (*) } println() if (m>n) out f(m+1,n)​
ואותו דבר הפוך, מN לM
 

vinney

Well-known member
הא...

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

Fingertip

New member
רמזים

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

haimico

New member
רמז

איך בונים פירמידה שמתחילה בגובה A וגובהה המקסימלי B ? אם A שווה ל B, פשוט פונים קיר בגובה A. אחרת: 1. בונים קיר בגובה A 2. בונים פירמידה שמתחילה בגובה A+1 וגובהה המקסימלי B 3. בונים קיר בגובה A זה צריך להיות מספיק בשביל שתפתור
 

רן המלך2

New member
אני מנסה ולא מצליח

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