היי,
בסעיף ג' מבקשים מאיתנו לבנות פונקציית exp רקורסיבית.
פונקציית exp הלא רקורסיבית שבניתי במבצעת מספר איטרציות כאשר בכל איטרציה מבוצעת הרכבה עם פונקציית המקור.
אבל כשאנחנו בונים פונקציה רקורסיבית הרי בקריאה הקורסיבית אנחנו נדרשים להעביר את self לאחר שהיא עברה הרכבה עם עצמה, וכעת באיטרציה השניה הפונקציה כבר לא זוכרת מי זו self המקורית. לכן היא תנסה בעצם להרכיב את self^2 עם self^2.
הדרך היחידה שאני מצליח לחשוב עליה זה להפוך את exp לפונקציית מעטפת ש"זוכרת" את self המקורית, ובתוכה לבנות פונקציה רקורסיבית שמשתמשת ב-self של פונקציית המעטפת.
האם זו דרך "כשרה"? כי אז הרי פונקציית exp עצמה לא באמת רקורסיבית, שכן היא לא קוראת לעצמה.
It's not recursive so does not follow the instructions. there is a way to build a recursive function without this problem-you probably need to use compose() that you built for that. if you have any problems, just post here.
אכן השתשתי ב-compose,ומכאן הבעיה. עכשיו את הערך המוחזר מcompose אני מנסה להעביר חזרה ל-exp_rec וכעת היא צריכה לבצע הרכבה של ערך זה עם self המקורי, אך היא כבר לא זוכרת אותו…
Try to figure out how it works with some small k, lets say - k=3, my advice is to draw the process of the recursion and see how it "folds", you can use pythontutor.com. I think you will get the answer from that proccess.
Remember that in recursion we usually dont keep our first values,we just use them when the recursion folds back to them.
Sorry my message was cut. continue to my last answer - you can use a casing function. Notice that every time we use memoization we use this kind of solution and it is still recursive solution. When you have a function that calls itself it will be a recursive solution.
אני חושב שזה שונה משום ששם בפונקציה הקורסיבית היה ארגומנט list שהכיל את כל האיברים שרצינו לחבר, כך שלא נוצרה הבעיה הזו.
הבעיה כאן היא שאני לא יודע איך ניתן לגשת ל-self המקורי בכל שלב ברקורסיה פרט לראשון.
שים לב, אתה שולח את הפונקציה המקורית בקריאה הראשונה… אם אתה רוצה לגשת אליה… אז גש…
קשה לומר יותר בלי להגיד ממש את הפתרון, אבל אתה מאוד קרוב
אין צורך לדאוג לזה אם אתה כותב את הקריאה הרקורסיבית הנכונה
The name exponent wasn't given for no reason- there is a relation between the recursive formula of exponent and the recusive call that you sopose to use here. Anyway, my recursion wasn't "complete"- I didn't return just the result of a recursive call- I used compose() for that