אתם מתרגלים שאלה מתוך מה"ט אלגוריתמיקה ותכנות בפייתון — הנדסאי תוכנהמבחן 2024 · אביב מועד ב · שאלה 14כל שאלות המבחן ←
אלגוריתמים בסיסייםרקורסיה

נתונה הפעולה הרקורסיביות what המקבלת רשימה מספרים שלמים הממוינת בסדר עולה ומספר שלם וחיובי num:

def what(arr, num, found = False):
    if len(arr)<2 :
        return found
    if arr[0] + arr[-1] < num :
        return what(arr[1:], num, found)
    if arr[0] + arr[-1] > num:
        return what(arr[: -1], num, found)
    print(arr[0], arr[-1])
    return what(arr[1:-1], num, True)
סעיף א

נתונה הרשימה הבאה של מספרים שלמים: arr = [2,4,7,13,18,21,30] עקבו אחרי זימון what(a, 20) רשמו את תוצאת הזימון. יש להראות מעקב!

סעיף ב

מה מבצעת הפעולה what באופן כללי?

סעיף ג

נתונה הפעולה הרקורסיביות why המקבלת רשימה מספרים שלמים הממוינת בסדר עולה ומספר שלם וחיובי num:

def why(arr, num, count = 0, left = 0, right = 1):
    if left == len(arr)-1 or right == len(arr):
        return count
    if arr[right] - arr[left] < num :
        return why(arr, num, count, left, right+1)
    if arr[right] - arr[left] > num:
        return why(arr, num, count, left+1, right)
    print(arr[left], arr[right])
    return why(arr, num, count+1, left+1, right+1)

נתונה הרשימה הבאה של מספרים שלמים: arr=[2,4,7,13,18,21,30] האם קיים מספר num שעבורו זימון why(a, num) יחזיר 2? אם כן, תנו דוגמה למספר כזה וציינו מה יהיה הפלט, ולא – הסבירו למה הדבר אינו אפשרי.

סעיף ד

מה מבצעת הפעולה why באופן כללי?

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי