ex1.1 רקורסיה מספרית ובוליאנית


קלט פלט חישובים

פונקציה רקורסיבית לחישוב חזקה

link

עליכם לממש פונקציה בשם Power אשר מקבלת שני פרמטרים:

  1. baseNum (int) - המספר הבסיסי
  2. exp (int) - המעריך (מספר שלם אי-שלילי)

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

אין להשתמש ב Math.Pow

דרישות

  1. הפונקציה חייבת להיות רקורסיבית
  2. הכותרת של הפונקציה היא: static int Power(int baseNum, int exp)
  3. מקרה הבסיס: כל מספר בחזקת 0 שווה ל-1
  4. המקרה הרקורסיבי: baseNum^exp = baseNum * baseNum^(exp-1)

בדיקה רקורסיבית של סדר עולה בספרות

link

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

  1. num - מספר שלם

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

דרישות:

  1. הפונקציה חייבת להיות רקורסיבית.
  2. יש לטפל במקרה הבסיס של מספר בן ספרה אחת.
  3. יש לבדוק שכל ספרה גדולה יותר מהספרה שלפניה.

הערות:

  1. מספר בן ספרה אחת נחשב כמסודר בסדר עולה.
  2. השתמשו באופרטורים חשבוניים לעבודה עם ספרות.

בדיקת פלינדרום באמצעות רקורסיה

link

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

  1. num - מספר שלם

הפונקציה צריכה להחזיר true אם המספר הוא פלינדרום, ו-false אם הוא אינו פלינדרום.

אין להפוך את המספר למחרוזת!

מותר לכתוב פונקציה רקורסיבית ההופכת את המספר.

הגדרת פלינדרום

מספר הוא פלינדרום אם הוא נקרא זהה משמאל לימין ומימין לשמאל. לדוגמה: 121, 1331, 7.

דרישות

  1. הפונקציה חייבת להיות רקורסיבית
  2. הפונקציה חייבת להיות סטטית
  3. הפונקציה חייבת להחזיר ערך בוליאני
  4. כותרת הפונקציה: static bool IsPalindrome(int num)

בדיקת קיום ספרה במספר באמצעות רקורסיה

link

עליכם לממש פונקציה רקורסיבית בשם HasDigit אשר מקבלת שני פרמטרים:

  1. num - מספר שלם לחיפוש
  2. digit - הספרה לחיפוש במספר

הפונקציה צריכה להחזיר true אם הספרה קיימת במספר, ו-false אחרת.

דרישות

  1. הפונקציה חייבת להיות רקורסיבית
  2. יש לטפל במקרה הבסיס כאשר המספר הוא 0
  3. יש להשתמש באופרטורים מתמטיים לחילוק הספרות

חישוב המחלק המשותף הגדול באמצעות רקורסיה

link

עליכם לממש פונקציה רקורסיבית בשם GCD אשר מקבלת שני פרמטרים:

  1. a - מספר שלם חיובי
  2. b - מספר שלם חיובי

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

אלגוריתם אוקלידס פועל לפי הכלל הבא:

  1. אם b = 0, אז GCD(a, b) = a
  2. אחרת, GCD(a, b) = GCD(b, a mod b)

דוגמה לביצוע האלגוריתם עבור GCD(48, 18):

  1. GCD(48, 18) = GCD(18, 48 % 18) = GCD(18, 12)
  2. GCD(18, 12) = GCD(12, 18 % 12) = GCD(12, 6)
  3. GCD(12, 6) = GCD(6, 12 % 6) = GCD(6, 0)
  4. GCD(6, 0) = 6

פעולה רקורסיבית לחישוב פיבונאצ’י

link

עליכם לממש פעולה רקורסיבית בשם Fibonacci אשר מקבלת פרמטר אחד:

  1. n (int) - המיקום בסדרת פיבונאצ’י

הפעולה צריכה להחזיר את המספר ה-n בסדרת פיבונאצ’י.

סדרת פיבונאצ’י

סדרת פיבונאצ’י מוגדרת כך:

  1. F(0) = 0
  2. F(1) = 1
  3. F(n) = F(n-1) + F(n-2) עבור n > 1

כלומר, כל מספר בסדרה הוא סכום של שני המספרים שלפניו.

דוגמה לסדרה

המספרים הראשונים בסדרת פיבונאצ’י הם: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34…

בדיקת מספר ראשוני באמצעות רקורסיה

link

עליכם לממש פונקציה רקורסיבית בשם IsPrime אשר מקבלת שני פרמטרים:

  1. num - המספר השלם החיובי לבדיקה

הפונקציה צריכה להחזיר true אם המספר ראשוני, ו-false אחרת.

הפונקציה היא פונקציה עוטפת המזמנת פונקציה רקורסיבית עם הפרמטרים הדרושים.

כללי הפתרון

  1. השתמשו ברקורסיה לבדיקת כל המחלקים האפשריים.
  2. התחילו לבדוק מהמחלק 2 ועד לשורש הריבועי של המספר.
  3. אם נמצא מחלק, המספר אינו ראשוני.
  4. אם לא נמצא מחלק עד לשורש הריבועי, המספר ראשוני.

מקרים מיוחדים

  1. המספרים 0 ו-1 אינם ראשוניים.
  2. המספר 2 הוא המספר הראשוני הזוגי היחיד.

חישוב עצרת באמצעות רקורסיה

link

עליכם לממש פונקציה בשם Factorial אשר מקבלת פרמטר אחד:

  1. n (int) - המספר השלם האי-שלילי שעבורו יש לחשב את העצרת

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

הגדרת עצרת מתמטית:

  1. 0! = 1
  2. 1! = 1
  3. n! = n * (n-1)! כאשר n > 1

דרישות:

  1. הפונקציה חייבת להיות רקורסיבית
  2. יש לטפל במקרי הבסיס בצורה נכונה
  3. הפונקציה צריכה להחזיר תוצאה נכונה עבור מספרים אי-שליליים

סכום ספרות מספר באמצעות רקורסיה

link

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

  1. num - מספר שלם חיובי

הפונקציה צריכה להחזיר את סכום כל הספרות במספר הנתון.

אלגוריתם רקורסיבי:

  1. מקרה הבסיס: אם המספר קטן מ-10 (חד-ספרתי), החזירו את המספר עצמו.
  2. מקרה הרקורסיבי: החזירו את הספרה האחרונה (num % 10) ועוד קריאה רקורסיבית עם המספר ללא הספרה האחרונה (num / 10).

דוגמה לחשיבה:

עבור המספר 123:

  1. 123 % 10 = 3 (הספרה האחרונה)
  2. 123 / 10 = 12 (המספר ללא הספרה האחרונה)
  3. התוצאה: 3 + SumDigits(12)

המשיכו באופן דומה עד להגיע למקרה הבסיס.

בדיקת זוגיות מספר באמצעות רקורסיה

link

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

  1. n - מספר שלם

הפונקציה צריכה להחזיר true אם המספר זוגי ו-false אם המספר אי-זוגי.

דרישות:

  1. הפונקציה חייבת להיות רקורסיבית
  2. אסור להשתמש באופרטור % (מודולו)
  3. הפונקציה צריכה לטפל גם במספרים שליליים

הגיון:

  1. מקרה בסיס: אם n הוא 0, הוא זוגי
  2. מקרה בסיס: אם n הוא 1, הוא אי-זוגי
  3. במקרה של מספר שלילי, בדקו את הערך המוחלט
  4. במקרה הרקורסיבי: חסרו 2 מהמספר והמשיכו לבדוק