רקורסיה - שאלות חזרה

1) כתוב פונקציה רקורסיבית RecursiveMult שמבצעת כפל באמצעות חיבור. רמז: יש צורך בפונקציה נוספת Mult, שתקרא ל RecursiveMult.
תשובה

2) יש לחשב חישוב עצרת חלקי שבו מכפילים כל איבר שני, לדוגמא עבור הקלט 5, יש להחזיר 1*3*5=15. האם הפונקציה הבאה נכונה:

Procedure SemiFactor(n)
  If n=1 return 1;
  Else
    X = semiFactor(n-2);
    Return (n*x);
  End;
End;

תשובה

3) יש ליצור רשימה באורך N. האם הפונקציה הבאה תעשה את העבודה:

Item{int val, Item *next}

Procedure CreateList(n)
  If n=1 
    Item itm = CreateItem();
    Return itm;
  Else
    Item itm = CreateItem();
    X = CreateList (n-1);
    Itm.next = X;
    Return (itm);
  End;
End;

תשובה