נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: עזרה בג’אווה-תרגיל רקורסיה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
dana
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 01 February 2010 בשעה 18:46 | IP רשוּם
ציטוט dana

שלום

יש לי תרגיל שאני לא יודעת איך לגשת אליו..אשמח לקבל כיוון ,דרך איך לפתור את התרגיל

מקבלים מערך המכיל מספרים שהם מס' שלמים ומתקבל מס' נוסף שהוא גם מס' שלם.

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

לדוגמא: מערך-{10,4, -3 ,8, 1}       num=14;

4+10=14 במקרה זה יוחזר אמת.

חזרה לתחילת העמוד הצג את כרטיס החבר של dana חפש הודעות אחרות של dana בקר בדף הבית של dana
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 01 February 2010 בשעה 19:45 | IP רשוּם
ציטוט ניר

הכיוון הוא backtracking. בכל מחזור השאלה היא האם המספר הנוכחי נכנס לסכום או לא.

__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
דנה
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 01 February 2010 בשעה 20:25 | IP רשוּם
ציטוט דנה

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

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

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 04 February 2010 בשעה 23:27 | IP רשוּם
ציטוט חיים

בס"ד

האם צריכים למצוא גם איברים לא צמודים? כלומר: גם למערך {10, 3, 4} יוחזר true כש num=14 ?

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 08 February 2010 בשעה 22:03 | IP רשוּם
ציטוט חיים

בס"ד

אם הצלחת לפתור את המצב הבסיסי הזה, תוכלי לעבור הלאה:

הפונקציה תקבל sum ואותו בודקים מול num.

אם num עדיין קטן מ sum, אז sum+=arr[++i],

אם שווה לו אז return true

אם גדול ממנו אז יש להפחית מ sum את arr[0], ולקדם את תחילת המערך ב 1.

עדיין יש לך על מה לעבוד: תנאי עצירה ועוד.

בהצלחה!

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 09 February 2010 בשעה 21:05 | IP רשוּם
ציטוט חיים

בס"ד

התכנית שכתבתי אינה עונה על מצבים בהם משולבים מס שליליים במערך, וכן על מצב בו num הוא מספר שלילי.

להלן התכנית הנכונה:

bool Func(int vec[], int i, int j, int num, int sum)
{
 if(i == vec.Length)
  return false;

 if(j < vec.Length)
  sum += vec[j++];

 if(sum == num)
  return 1;

 if(j == vec.Length)
 {
  sum = 0;
  j = ++i;
 }

 return Func(vec, i, j, num, sum);
}

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

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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