פונקציה רקורסיבית לחישוב חזקה
עליכם לממש פונקציה בשם Power
אשר מקבלת שני פרמטרים:
- baseNum (int) - המספר הבסיסי
- exp (int) - המעריך (מספר שלם אי-שלילי)
הפונקציה צריכה להחזיר את התוצאה של baseNum^exp באמצעות רקורסיה.
אין להשתמש ב Math.Pow
דרישות
- הפונקציה חייבת להיות רקורסיבית
- הכותרת של הפונקציה היא: static int Power(int baseNum, int exp)
- מקרה הבסיס: כל מספר בחזקת 0 שווה ל-1
- המקרה הרקורסיבי: baseNum^exp = baseNum * baseNum^(exp-1)
בדיקה רקורסיבית של סדר עולה בספרות
עליכם לממש פונקציה רקורסיבית בשם IsAscending
אשר מקבלת פרמטר אחד:
- num - מספר שלם
הפונקציה צריכה לבדוק אם הספרות במספר מסודרות בסדר עולה ולהחזיר true אם כן, ו-false אם לא.
דרישות:
- הפונקציה חייבת להיות רקורסיבית.
- יש לטפל במקרה הבסיס של מספר בן ספרה אחת.
- יש לבדוק שכל ספרה גדולה יותר מהספרה שלפניה.
הערות:
- מספר בן ספרה אחת נחשב כמסודר בסדר עולה.
- השתמשו באופרטורים חשבוניים לעבודה עם ספרות.
בדיקת פלינדרום באמצעות רקורסיה
עליכם לממש פונקציה רקורסיבית בשם IsPalindrome
אשר מקבלת פרמטר אחד:
- num - מספר שלם
הפונקציה צריכה להחזיר true אם המספר הוא פלינדרום, ו-false אם הוא אינו פלינדרום.
אין להפוך את המספר למחרוזת!
מותר לכתוב פונקציה רקורסיבית ההופכת את המספר.
הגדרת פלינדרום
מספר הוא פלינדרום אם הוא נקרא זהה משמאל לימין ומימין לשמאל. לדוגמה: 121, 1331, 7.
דרישות
- הפונקציה חייבת להיות רקורסיבית
- הפונקציה חייבת להיות סטטית
- הפונקציה חייבת להחזיר ערך בוליאני
- כותרת הפונקציה: static bool IsPalindrome(int num)
בדיקת קיום ספרה במספר באמצעות רקורסיה
עליכם לממש פונקציה רקורסיבית בשם HasDigit
אשר מקבלת שני פרמטרים:
- num - מספר שלם לחיפוש
- digit - הספרה לחיפוש במספר
הפונקציה צריכה להחזיר true אם הספרה קיימת במספר, ו-false אחרת.
דרישות
- הפונקציה חייבת להיות רקורסיבית
- יש לטפל במקרה הבסיס כאשר המספר הוא 0
- יש להשתמש באופרטורים מתמטיים לחילוק הספרות
חישוב המחלק המשותף הגדול באמצעות רקורסיה
עליכם לממש פונקציה רקורסיבית בשם GCD
אשר מקבלת שני פרמטרים:
- a - מספר שלם חיובי
- b - מספר שלם חיובי
הפונקציה צריכה להחזיר את המחלק המשותף הגדול של שני המספרים באמצעות אלגוריתם אוקלידס הרקורסיבי.
אלגוריתם אוקלידס פועל לפי הכלל הבא:
- אם b = 0, אז GCD(a, b) = a
- אחרת, GCD(a, b) = GCD(b, a mod b)
דוגמה לביצוע האלגוריתם עבור GCD(48, 18):
- GCD(48, 18) = GCD(18, 48 % 18) = GCD(18, 12)
- GCD(18, 12) = GCD(12, 18 % 12) = GCD(12, 6)
- GCD(12, 6) = GCD(6, 12 % 6) = GCD(6, 0)
- GCD(6, 0) = 6
פעולה רקורסיבית לחישוב פיבונאצ’י
עליכם לממש פעולה רקורסיבית בשם Fibonacci
אשר מקבלת פרמטר אחד:
- n (int) - המיקום בסדרת פיבונאצ’י
הפעולה צריכה להחזיר את המספר ה-n בסדרת פיבונאצ’י.
סדרת פיבונאצ’י
סדרת פיבונאצ’י מוגדרת כך:
- F(0) = 0
- F(1) = 1
- F(n) = F(n-1) + F(n-2) עבור n > 1
כלומר, כל מספר בסדרה הוא סכום של שני המספרים שלפניו.
דוגמה לסדרה
המספרים הראשונים בסדרת פיבונאצ’י הם: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34…
בדיקת מספר ראשוני באמצעות רקורסיה
עליכם לממש פונקציה רקורסיבית בשם IsPrime
אשר מקבלת שני פרמטרים:
- num - המספר השלם החיובי לבדיקה
הפונקציה צריכה להחזיר true אם המספר ראשוני, ו-false אחרת.
הפונקציה היא פונקציה עוטפת המזמנת פונקציה רקורסיבית עם הפרמטרים הדרושים.
כללי הפתרון
- השתמשו ברקורסיה לבדיקת כל המחלקים האפשריים.
- התחילו לבדוק מהמחלק 2 ועד לשורש הריבועי של המספר.
- אם נמצא מחלק, המספר אינו ראשוני.
- אם לא נמצא מחלק עד לשורש הריבועי, המספר ראשוני.
מקרים מיוחדים
- המספרים 0 ו-1 אינם ראשוניים.
- המספר 2 הוא המספר הראשוני הזוגי היחיד.
חישוב עצרת באמצעות רקורסיה
עליכם לממש פונקציה בשם Factorial
אשר מקבלת פרמטר אחד:
- n (int) - המספר השלם האי-שלילי שעבורו יש לחשב את העצרת
הפונקציה צריכה להחזיר את העצרת של n באמצעות רקורסיה.
הגדרת עצרת מתמטית:
- 0! = 1
- 1! = 1
- n! = n * (n-1)! כאשר n > 1
דרישות:
- הפונקציה חייבת להיות רקורסיבית
- יש לטפל במקרי הבסיס בצורה נכונה
- הפונקציה צריכה להחזיר תוצאה נכונה עבור מספרים אי-שליליים
סכום ספרות מספר באמצעות רקורסיה
עליכם לממש פונקציה רקורסיבית בשם SumDigits
אשר מקבלת פרמטר אחד:
- num - מספר שלם חיובי
הפונקציה צריכה להחזיר את סכום כל הספרות במספר הנתון.
אלגוריתם רקורסיבי:
- מקרה הבסיס: אם המספר קטן מ-10 (חד-ספרתי), החזירו את המספר עצמו.
- מקרה הרקורסיבי: החזירו את הספרה האחרונה (num % 10) ועוד קריאה רקורסיבית עם המספר ללא הספרה האחרונה (num / 10).
דוגמה לחשיבה:
עבור המספר 123:
- 123 % 10 = 3 (הספרה האחרונה)
- 123 / 10 = 12 (המספר ללא הספרה האחרונה)
- התוצאה: 3 + SumDigits(12)
המשיכו באופן דומה עד להגיע למקרה הבסיס.
בדיקת זוגיות מספר באמצעות רקורסיה
עליכם לממש פונקציה רקורסיבית בשם IsEven
אשר מקבלת פרמטר אחד:
- n - מספר שלם
הפונקציה צריכה להחזיר true
אם המספר זוגי ו-false
אם המספר אי-זוגי.
דרישות:
- הפונקציה חייבת להיות רקורסיבית
- אסור להשתמש באופרטור % (מודולו)
- הפונקציה צריכה לטפל גם במספרים שליליים
הגיון:
- מקרה בסיס: אם n הוא 0, הוא זוגי
- מקרה בסיס: אם n הוא 1, הוא אי-זוגי
- במקרה של מספר שלילי, בדקו את הערך המוחלט
- במקרה הרקורסיבי: חסרו 2 מהמספר והמשיכו לבדוק