תרגיל – מספרי פיבונאצ'י
- fibonacci numbers
- Mar 4, 2019
- 2 min read
תרגיל – מספרי פיבונאצ'י
מספרי פיבונאצ'י הם סדרה של מספרים אשר כל מספר בה הוא סכום של שני המספרים שקדמו לו (מתחילים במספרים 0 ו- 1 – לפעמים מתחילים ב- 1 וממשיכים משם)– הנה למטה 7 מספרים בסדרת פיבונאצ'י משמאל לימין -
0,1,1,2,3,5,8
כל מספר הוא סכום השניים הקודמים לו בסדרה.
המשימה שלנו היא לבנות פונקציה עם פרמטר מספרי אחד (נניח n) שיגיד מה גודל הסדרה של פיבונאצ'י שאנו רוצים ליצור, ואשר תייצר את הסדרה באופן אוטומטי עבורנו. כך למשל אם נגיד שאנו רוצים סדרה בגודל 7 איברים, היא תפיק את הרשימה שהבאנו בדוגמא למעלה מ- 0 עד 8. כמובן שיש דרכים רבות לבנות תוכנית שכזאת, אנו נציג את אחת הדרכים הבסיסיות יותר –
def fib(n): i=0 a=0 b=1 while i<n: print (a) i +=1 c=a+b a=b b=c fib (10)
>>>
0
1
1
2
3
5
8
13
21
34
השלבים –
בחרנו שם לפונקציה – fib וגם שם לפרמטר המגדיר את גודל הסדרה n
הגדרנו שלושה משתנים נוספים: i שישמש אינדקס לסיום הלולאה כאשר הסדרה תגיע לגודל שהגדרנו, הערך ב-i מתחיל ב- 0 והוא גדל באחד עם כל סיבוב של הלולאה. וכן שני תאים נוספים a ו- b אשר יכילו תמיד את שני הערכים האחרונים שחישבנו בסדרה. אנו מזינים ב a ו- b את שני הערכים הראשוניים בסדרת פיבונאצ'י (0,1) ומתחילים לייצר את הלולאה.
הלולאה שבחרנו היא מסוג while ויש בה תנאי מפסיק (שעוצר את הלולאה) והוא כאשר i יהיה שווה ל- n שהוא מספר האיברים שאנו רוצים לכלול בסדרה. כלומר מובטח לנו שהלולאה תרוץ מספר פעמים השווה ל- n (זה נראה כי מספר הפעמים שהלולאה רצה אינו שווה ל- n משום שהלולאה אינה ממשיכה פעם נוספת כאשר i=n , אבל מכוון שמתחילים מ- 0 ולא מ- 1 אנו מקבלים את מספר האיברים בסדרה כפי שביקשנו, כך למשל אם אנו מבקשים את כל המספרים הקטנים מ-3 – אנו מקבלים שלושה מספרים 0,1,2).
הלולאה שלנו בנויה כך שבכל פעם התא a יכיל את המספר הבא בסדרה, הוא מתחיל מ- 0 כי כך הגדרנו. לאחר פעולת ההדפסה אנו לוקחים את סכום שני המספרים שיש בתאים a ו- b ושומרים אותם באופן זמני במשתנה שקראנו לו c. לאחר מכן אנו מחליפים את הערכים ב- a ו- b . לתוך a אנו מכניסים את הערך שהיה ב- b ולתוך b את הערך שהיה ב- c כך שבסיבוב הבא של הלולאה a יכיל את המספר הבא בסדרה ו- b את זה שאחריו. ונראה את זה בטבלה –
מספר הסיבובים בלולאה הערך של a הערך של b
ערך התחלתי 0 1
לאחר סיבוב 1 1 1
לאחר סיבוב 2 1 2
לאחר סיבוב 3 2 3
לאחר סיבוב 4 3 5
לאחר סיבוב 5 5 8
אנו רואים שהערכים של a מהווים את סדרת פיבונאצ'י והערכים של b הם הערך הבא בתור.
לאחר שכתבנו את הפונקציה, הפעלנו אותה, או במילים מקצועיות קראנו לה - (fib(10 - והכנסנו את המספר 10 בפרמטר, כך שהתוצאה שקיבלנו היא עשרת מספרי הפיבונאצ'י הראשונים מ- 0 עד 34.
My sister Lisa has always been the impossible one to shop for. She's one of those people who just buys whatever she wants, when she wants it. So when her 30th birthday was rolling around, I was hitting a wall. I wanted to get her something genuinely great, something she wouldn't expect. I'd had my eye on this stunning necklace she'd pointed out months ago, but it was way, way out of my budget. Like, "maybe if I didn't pay rent for two months" out of my budget. I felt pretty defeated, staring at my laptop, knowing anything I could actually afford would just be another thing to add to her collection.
I’d been playing a little on this one…