יסודות הרקורסיה
חלק מהיחידה יסודות במסלול ה-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);
}כל פונקציה רקורסיבית צריכה:
- מקרה בסיס לעצירת הרקורסיה
- מקרה רקורסיבי שמתקרב למקרה הבסיס
לדוגמה, חישוב factorial(3):
- factorial(3) קוראת ל-factorial(2)
- factorial(2) קוראת ל-factorial(1)
- factorial(1) מחזירה 1 (מקרה בסיס)
- factorial(2) מחזירה 2 * 1 = 2
- factorial(3) מחזירה 3 * 2 = 6
אתגר
קלצרו פונקציה בשם sumToN שמשתמשת ברקורסיה כדי לחשב את סכום המספרים מ־1 עד n.
לדוגמה:
- sumToN(3) אמורה להחזיר 6 (1 + 2 + 3)
- sumToN(5) אמורה להחזיר 15 (1 + 2 + 3 + 4 + 5)
הפונקציה שלכם צריכה:
- להשתמש במקרה בסיס כאשר n הוא 1 (להחזיר 1)
- אחרת, להחזיר את n ועוד סכום המספרים מ־1 עד (n-1)
נסו בעצמכם
#include <stdio.h>
// כתבו כאן את הפונקציה sumToN שלכם
// אל תשנו את הפונקציה main()
int main() {
int n;
scanf("%d", &n);
printf("%d", sumToN(n));
return 0;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7פונקציות
הכרזה על פונקציהטיפוסי החזרהפרמטריםאתגר סיכום #1יסודות הרקורסיהאבות טיפוס של פונקציותאתגר סיכום #2תרגלו בעצמכם: קומפיילר C אונליין