תרגיל – מספרי פיבונאצ'י

March 4, 2019

תרגיל – מספרי פיבונאצ'י

מספרי פיבונאצ'י הם סדרה של מספרים אשר כל מספר בה הוא סכום של שני המספרים שקדמו לו (מתחילים במספרים 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

השלבים –

  1. בחרנו שם לפונקציה – fib וגם שם לפרמטר המגדיר את גודל הסדרה n

  2. הגדרנו שלושה משתנים נוספים: i שישמש אינדקס לסיום הלולאה כאשר הסדרה תגיע לגודל שהגדרנו, הערך ב-i  מתחיל ב- 0 והוא גדל באחד עם כל סיבוב של הלולאה. וכן שני תאים נוספים a  ו- b אשר יכילו תמיד את שני הערכים האחרונים שחישבנו בסדרה. אנו מזינים ב a ו- b את שני הערכים הראשוניים בסדרת פיבונאצ'י (0,1) ומתחילים לייצר את הלולאה.

  3. הלולאה שבחרנו היא מסוג while ויש בה תנאי מפסיק (שעוצר את הלולאה) והוא כאשר i  יהיה שווה ל- n שהוא מספר האיברים שאנו רוצים לכלול בסדרה. כלומר מובטח לנו שהלולאה תרוץ מספר פעמים השווה ל- n (זה נראה כי מספר הפעמים שהלולאה רצה אינו שווה ל- n משום שהלולאה אינה ממשיכה פעם נוספת כאשר i=n , אבל מכוון שמתחילים מ- 0 ולא מ- 1  אנו מקבלים את מספר האיברים בסדרה כפי שביקשנו, כך למשל אם אנו מבקשים את כל המספרים הקטנים מ-3 – אנו מקבלים שלושה מספרים 0,1,2).

  4. הלולאה שלנו בנויה כך שבכל פעם התא 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.

 

 

 

 

 

 

 

 

 

Please reload

Please reload

רעננו את הדף והקליקו למעבר לנושא הבא: