פונקציה רקורסיבית
שיעור 8 מתוך 17 בקורס פונקציות ב-C של Coddy.
פונקציה רקורסיבית היא פונקציה שממשיכה לקרוא לעצמה.
דוגמה מפורסמת לפונקציה הזו היא כשצריך לחשב את העצרת של מספר.
הנוסחה לכך היא n!=1×2×…×n.
כדי למצוא את העצרת של מספר, צריך להכפיל את כל המספרים מ־1 עד n.
לדוגמה:
4!=1×2×3×4=24אפשר להגדיר פונקציה רקורסיבית כך:
int fact(int n) {
if (n == 1) {
return 1;
}
return n * fact(n - 1);
}דמיינו שיש לכם גרם מדרגות. כדי להתחיל לטפס, מתחילים בקומת הקרקע (מדרגה 0). בפונקציה רקורסיבית, נקודת ההתחלה הזו נקראת מקרה הבסיס. זהו המקום שבו הפונקציה מפסיקה לקרוא לעצמה ומחזירה ערך.
בדוגמת העצרת, מקרה הבסיס מתקיים כאשר nnn (המספר) הוא 1. העצרת של 1 היא פשוט 1, ולכן הפונקציה מחזירה 1 ללא חישובים נוספים.
ראשית, בודקים אם המספר שווה לאחד:
if (n == 1) {
return 1;
}קריאות רקורסיביות:
עבור כל מספר גדול מ־1, הפונקציה מסתמכת על גרסאות קטנות יותר של עצמה. היא קוראת לעצמה עם n−1 (צעד אחד למטה במדרגות). זו הקריאה הרקורסיבית:
return n * fact(n - 1);חשבו על זה כמו על טיפוס במדרגות. כדי להגיע למדרגה 5, צריך להגיע קודם למדרגה 4, ואז למדרגה 3, וכן הלאה. כל קריאה רקורסיבית היא כמו ירידה של מדרגה אחת.
אתגר
קלהגדר את הפונקציה הרקורסיבית:
- כתוב פונקציה בשם countdown שמקבלת פרמטר שלם n.
- בתוך הפונקציה, הדפס את הערך הנוכחי של n.
- אם n גדול מ־0, קרא רקורסיבית ל־countdown עם n - 1.
- אם n הוא 0 או פחות, הדפס "Blastoff!".
דוגמה: אם המספר הוא 3, הפלט אמור להיראות כך:
3
2
1
Blastoff!
נסו בעצמכם
#include <stdio.h>
// הגדירו את הפונקציה countdown
int main() {
int start = 5;
// קראו לפונקציה
return 0;
}כל השיעורים ביחידה פונקציות ב-C
תרגלו בעצמכם: קומפיילר C אונליין