Menu
Coddy logo textTech

יסודות הרקורסיה

חלק מהיחידה יסודות במסלול ה-C של Coddy. שיעור 50 מתוך 63.

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

בואו נבחן פונקציה רקורסיבית פשוטה שמחשבת עצרת:

int factorial(int n) {
    // מקרה בסיס: העצרת של 0 או 1 היא 1
    if (n <= 1) {
        return 1;
    }
    
    // מקרה רקורסיבי: n! = n * (n-1)!
    return n * factorial(n - 1);
}

כל פונקציה רקורסיבית צריכה:

  1. מקרה בסיס לעצירת הרקורסיה
  2. מקרה רקורסיבי שמתקרב למקרה הבסיס

לדוגמה, חישוב factorial(3):

  • factorial(3) קוראת ל-factorial(2)
  • factorial(2) קוראת ל-factorial(1)
  • factorial(1) מחזירה 1 (מקרה בסיס)
  • factorial(2) מחזירה 2 * 1 = 2
  • factorial(3) מחזירה 3 * 2 = 6
challenge icon

אתגר

קל

צרו פונקציה בשם sumToN שמשתמשת ברקורסיה כדי לחשב את סכום המספרים מ־1 עד n.

לדוגמה:

  • sumToN(3) אמורה להחזיר 6 (1 + 2 + 3)
  • sumToN(5) אמורה להחזיר 15 (1 + 2 + 3 + 4 + 5)

הפונקציה שלכם צריכה:

  1. להשתמש במקרה בסיס כאשר n הוא 1 (להחזיר 1)
  2. אחרת, להחזיר את n ועוד סכום המספרים מ־1 עד (n-1)

נסו בעצמכם

#include <stdio.h>

// כתבו כאן את הפונקציה sumToN שלכם

// אל תשנו את הפונקציה main()
int main() {
    int n;
    scanf("%d", &n);
    
    printf("%d", sumToN(n));
    return 0;
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר C אונליין