פורסם 2009 ביוני 416 שנים שלום לכולם זה התרגיל: זה הפתרון שלי: public class arr1 { public static void g (int [ ] a,int i ) { if (i>0 || i<a.length) { if ( i== a.length-1){ if (s(a,i)< 0) a[i] = -a[i]; } else { if (s(a,i)< 0) a[i] = -a[i]; g(a,i+1); } } } עכשיו בדקתי את הפתרון והוא נכון בתנאי שמוכנס לi הערך 0 ל i. איך אני יכול לוודא שמוכנס כזה ערך ברקורסיה? לא הצלחתי לחשוב על משהו אחר מאשר השורה הראשונה שכתבתי בשיטה בין 0 לסוף המערך.. או שיש דרך אחרת לכתוב את השיטה. זה קורה לי בהרבה תרגילי מעבר לרקורסיה , השאלה שלי האם זה יהיה נכון להשאיר את זה ככה? תודה לעוזרים.
פורסם 2009 ביוני 416 שנים דבר ראשון תכתוב שתי מתודות (איזה מן תרגום טיפשי זה "שיטה")הראשונה תהיה g והשניה g1g תקבל רק את המערך והיא תקרא ל-g1 ותשלח אליה את המערך ואת i=0 g1 תהיה הרקורסיבית וככה אתה מבטיח שהיא תקבל i=0 בקריאה הראשונה אליה.דבר שני גוף הרקורסיה שלך בנוי לא טוב.רקורסיה צריכה תנאי עצירה וזה צריך להיות במקרה שלנו if ( i== a.length) returnאחרי זה תכניס את ה-else שלך ומה שאחריו.
פורסם 2009 ביוני 416 שנים זה לא באמת משנה, גם הקוד שלו נכון (אני מניח, לא התעמקתי בו). יש כבר תנאי עצירה, ואם הוא מתקיים אז הרקורסיה לא תיקרא.
פורסם 2009 ביוני 416 שנים מסכים אתך שניצל...הכוונה הייתה שהתנאי לא ברור לעין ולקורא - מה שיכול לפעמים להוביל לבאגים.גם הקוד עצמו יעבוד אבל הוא ממש לא מובן ויש קוד מיותר.אגב שניצל, אני מחפש עבודה בתחום - אם יש מצב שתוכל לעזור לי אני אשלח לך ה"פ.
פורסם 2009 ביוני 416 שנים סתם בסוגריים כי אני מתעניין, זה בכיתה י"ב לומדים? מאיפה לקחת את זה? כי זה ניראה ממבחן כלשהו..
פורסם 2009 ביוני 516 שנים מחבר אוקיי תודה על העזרה.הבעיה היא חלק משאלה ממבחן באופ לקורס מדעי המחשב משנת 2005 אם אני לא טועה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.