עזרה בפונקציה בוליאנית רקרוסיבית

  • פותח הנושא ocp1
  • פורסם בתאריך

ocp1

New member
עזרה בפונקציה בוליאנית רקרוסיבית

שלום, אני צריך לכתוב פונקציה בוליאנית שסוכמת את ספרותיו של איבר ומחזירה true אם הסכום זוגי ו- false אם הוא אי-זוגי. כתבתי בעבר פונקציה זהה רק מסוג int. בפונקציה הזו הסכימה מתבצעת מעולה, אבל משום מה בבוליאנית אני לא מקבל את הסכום הנכון. צירפתי את הגירסה הבוליאנית. כתבתי אותה בצורה זמנית רק כדי לראות איך הסכום יוצא, ולא הולך לי. מה אני עושה לא נכון ?
 

ocp1

New member
שאלה

האם אתה מתכוון למסלול שלא מחזיר true או false ? כי זה ידוע, וכמו שציינתי, אני לא מנסה לפתור אותו כרגע. אני מנסה להבין מדוע sum לא נסכם כמו שצריך. אשמח להכוונה.
 

nadav1974

New member
אתה לא צריך את sum

אם כי אפשר אולי להשתמש בו. בכל אופן, מה בדיוק אתה מחזיר בפונקציה אם n>=10?
 

ליאור ב

New member
Here you go

Remember that odd + odd = even and even + even = even all other options are odd So we can see they have to be equal. So try this, it should work. bool IsEvenSumDig (int n) { int div = n % 10; if (n < 10) { if (n % 2 == 0) return true; else return false; } //This is the magic. //you check to see if the current number "Evenity" equals //to the return value's "Evenity". return (div % 2 == 0) == IsEvenSumDig (n / 10); } Hope it was helpful.​
ליאור.
 

ליאור ב

New member
תודה.

את העובדה שאני חכם אני יודע גם בלי שיזכירו לי מדי פעם. תודה בכל אופן. ליאור.
 

ליאור ב

New member
חכם אני כן אבל לא פסיכולוג.

אז אם תוכל להסביר את עצמך אני אולי אוכל להגיב ברצינות. ליאור.
 

vinney

Well-known member
הסבר קצר

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

ליאור ב

New member
אתה צודק במידה מסויימת, אבל

דבר ראשון, אני חושב שמדוגמאות ניתן ללמוד הרבה. ודבר נוסף, קשה לי להבין למה אתה אוהב למשוך אנשים באף. זה לא שהבן-אדם לא ניסה. ואם אתה טוען שאתה גם יכול לתת את אותו הפתרון אז איך משפט כמו (ואני מצטט) "אתה לא צריך את sum אם כי אפשר אולי להשתמש בו. בכל אופן, מה בדיוק אתה מחזיר בפונקציה אם n>=10?" אם היית מגיע לאותו פתרון שאני הגעתי לא היית מבלבל ת השואל ומציע לו להשתמש ב sum. קשה לי גם להבין למה התעלמת ממשפטי ההסבר שלי כשאמרת שננתי פתרון ללא הסבר. כמו משפטים אלה:
Remember that odd + odd = even and even + even = even all other options are odd So we can see they have to be equal. So try this, it should work.​
או הערות מובנות בקוד כמו אלה:
//This is the magic. //you check to see if the current number "Evenity" equals //to the return value's "Evenity".​
בכל אופן אין שום רע בלתת פתרונות למי שמבקש, בעיקר אם הוא כבר ניסה ולא מצליח להבין למה הוא לא מצליח. אם אתה לא מרוצה מצורת התנהלות זו אני ממליץ לך שלא תקרא את ההודעות שלי, כי אני אמשיך לתת פתרונות מדי פעם כאשר אני חושב שהקוד הוא הדרך היעילה ביותר להגיע לפתרון. ליאור.
 
למעלה