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

נושא: C, רקורסיה

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 29 September 2006 בשעה 19:42 | IP רשוּם
ציטוט אורח

צריך לבנות פונקצייה רקורסיבית בשפת C
הפונקצייה מקבלת מערך בגודל N, מקבלת את גודל המערך ועוד פרמטר K [מספר שלם]
[כמו כן, כל איברי המערך הם מספרים שלמים]
הפונקצייה מחזירה true אם היא מוצאת כמה איברים במערך שסכומם שווה לפרמטר K.
הפונקצייה בעצם צריכה לסייר במערך ולנסות כל צירוף אפשרי של איברים עד שהיא מגיעה לסכום K. [צירוף של איברים, הכוונה היא איברים שונים, אסור למשל a[1] + a[2] + a[1]

למישהו יש רעיונת?





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

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 29 September 2006 בשעה 20:23 | IP רשוּם
ציטוט Fate

קוד:

BOOL func(int arr[],int n,int k)
{
    if (0 == n) {
        return FALSE;
    if (arr[n - 1] == k) {
        return TRUE;
    }
    if (TRUE == func(arr,n - 1,k)) {
        return TRUE;
    }
    if (TRUE == func(arr,n - 1,k - arr[n - 1])) {
        return TRUE;
    }
    return FALSE;
}

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


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

כן גם אני התקשיתי בבעיה הזאת בדיוק. באמת די מסובכת, אם אין ניסיון ברקורסיה...
אבל מה באמת יש משתנה BOOL?? ניסיתי להריץ את התוכנית והמהדר לא זיהה לי לא BOOL, לא TRUE ולא FALSE....
חזרה לתחילת העמוד הצג את כרטיס החבר של SlimShady חפש הודעות אחרות של SlimShady בקר בדף הבית של SlimShady
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 01 October 2006 בשעה 21:27 | IP רשוּם
ציטוט Fate

אהה נכון טעות שלי, זה פשוט ההגדרות נתונים של ווינדווס בשביל C...
בc++ יש לך bool true false...
ובC צריך להגדיר אותם, אםשר לעשות #include <windows.h>
אבל אם אתה לא באמת מתכנת לווינדוס אין סיבה... יותר פשוט להוסיף מעל הקוד:
קוד:

#define BOOL int
#define TRUE 1
#define FALSE 0

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

הצטרף / הצטרפה: 01 October 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 28
נשלח בתאריך: 03 October 2006 בשעה 15:08 | IP רשוּם
ציטוט SlimShady

אתה יודע יותר פשוט כבר לכתוב בתוכנית int 1, 0....

__________________
A little C4 knocking on your door
חזרה לתחילת העמוד הצג את כרטיס החבר של SlimShady חפש הודעות אחרות של SlimShady
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 03 October 2006 בשעה 19:06 | IP רשוּם
ציטוט Fate

SlimShady כתב:
אתה יודע יותר פשוט כבר לכתוב בתוכנית int 1, 0....

יותר תקין אבל בתיכנות מול windows.h להשתמש בשמות האלה...
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 

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

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

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