כשבאים אלינו בבקשה לכתוב פונקציה שמחשבת חזקה של מספר, הפתרון בד”כ נראה כך:
|
|
זה פתרון מאוד פשוט, אבל הוא בסיבוכיות $ O(n) $.
אפשר לשפר אותו ע"י חישוב חזקות שהן חזקות של 2 ולהתבסס על הייצוג הבינארי של מספר ועל חוקי החזקות:
|
|
יש כאן רק $ \log(n) $ איטרציות.
האמת שאני מרגיש שכתבתי את זה כבר פעם, אבל אני לא הצלחתי למצוא את הטיפ המקורי.
בכל מקרה, כתבתי את זה בעיקר כדי להראות שזה אפשרי ומגניב. צריך לזכור כמובן שיש בFramework את הפונקציה Math.Pow ועדיף להשתמש בה בד"כ.
שיהיה שבוע חזק.