Menu
Coddy logo textTech

פונקציות רקורסיביות

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 44 מתוך 63.

פונקציה רקורסיבית קוראת לעצמה עבור תת־בעיה קטנה יותר. מקרה בסיס מחזיר ערך בלי קריאה רקורסיבית נוספת. בחישוב סכום ספירה לאחור, אפס הוא מקרה הבסיס ו־n - 1 מקרב אליו. רקורסיה רגילה משתמשת במקום במחסנית הקריאות, לכן שמרו על עומק קלט קטן.

fun countdownSum(n: Int): Int {
    if (n == 0) return 0
    return n + countdownSum(n - 1)
}

בתוך main:

println(countdownSum(4))

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

רקורסיה זקוקה למקרה בסיס שניתן להגיע אליו ולהתקדמות לעברו.

challenge icon

אתגר

בינוני

השלם את recursiveSum עם הפרמטרים number: Int. בעזרת רקורסיה, החזר את הסכום מ־1 עד number. number הוא בין 0 ל־100. התוצאה עבור אפס היא אפס.

אלא אם צוין לעיל טווח מצומצם יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים שלמים וערכים שלמים באוספים הם בין ‎-1000 ל־1000. טקסט שמסופק לצורך ניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.

החזר ערך מסוג Int. השאר את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ואחריו איבריה, ומפה מתחילה במספר הרשומות שלה ואחריו כל מפתח וערך. רשימות מקוננות חוזרות על התבנית של מספר איברים ואחריו איברים עבור כל שורה. ה־main שסופק מדפיס את הערך המוחזר ואחריו תו שורה חדשה אחד. רשימות משתמשות בפורמט הסטנדרטי של Kotlin עם סוגריים מרובעים; אל תדפיס תוויות נוספות.

נסו בעצמכם

fun recursiveSum(number: Int): Int {
    // כתבו את הפתרון שלכם כאן.
    return 0
}
fun main() {
    val number = readln().toInt()
    println(recursiveSum(number))
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

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