أرقام فيبوناتشي في لغة بايثون

Arqam Fybwnatshy Fy Lght Baythwn



'إذا تمت إضافة 0 إلى 1 ، فستكون الإجابة 1. إذا تمت إضافة الإجابة 1 والملحق (وليس الإضافة) معًا ، فستكون الإجابة الجديدة 2. إذا تمت إضافة هذه الإجابة الجديدة وإضافتها معًا ، فإن الإجابة ستكون 3. إذا تمت إضافة هذه الإجابة الجديدة وإضافتها معًا ، فستكون الإجابة 5. '

أرقام فيبوناتشي هي تسلسل معين حيث يتم الإعلان عن القيمة الأولى مسبقًا على أنها 0 والقيمة الثانية معلنة مسبقًا على أنها 1. يتم إنتاج باقي الأرقام من هذين الرقمين عن طريق إضافة الرقمين السابقين. جميع أرقام فيبوناتشي هي أعداد صحيحة موجبة ، تبدأ من 0. أول اثني عشر رقمًا فيبوناتشي وكيفية الحصول عليها هي كما يلي:

0
1
1 + 0 = 1
1 + 1 = 2
2 + 1 = 3
3 + 2 = 5
5 + 3 = 8
8 + 5 = 13
13 + 8 = 21
21 + 13 = 34
34 + 21 = 55
55 + 34 = 89







بدون تعبيرات الجمع ، يمكن وضع أرقام فيبوناتشي هذه في جدول على النحو التالي:



0 1 1 اثنين 3 5 8 13 واحد وعشرين 3. 4 55 89
0 1 اثنين 3 4 5 6 7 8 9 10 أحد عشر

الصف الأول يحتوي على أرقام فيبوناتشي. يحتوي الصف الثاني على فهارس صفرية ، بافتراض أن أرقام فيبوناتشي موجودة في مصفوفة.



يمكن إنتاج أرقام فيبوناتشي في وقت O (n) وفي وقت O (1). في تعبيرات التعقيد الزمني هذه ، تعني n n عمليات رئيسية ، و 1 تعني عملية رئيسية واحدة. باستخدام O (n) ، يتم إنتاج أرقام فيبوناتشي n ، بدءًا من 0. باستخدام O (1) ، يتم إنتاج رقم واحد فيبوناتشي من مؤشر مطابق. هذا هو السبب في أنها تتطلب عملية رئيسية واحدة فقط بدلاً من n عمليات رئيسية.





الهدف من هذه المقالة هو شرح كيفية إنتاج أرقام فيبوناتشي ، في كلتا الحالتين ، باستخدام بايثون.

صيغة لرقم فيبوناتشي

التعريف الرسمي لرقم فيبوناتشي هو:



حيث F ن هو رقم فيبوناتشي عند مؤشر n

إنتاج أرقام فيبوناتشي بتوقيت O (n)

إذا كان n هو 1 ، فسيتم طباعة 0 فقط كرقم فيبوناتشي. إذا كان n هو 2 ، فسيتم طباعة 0 و 1 كأرقام فيبوناتشي ، بهذا الترتيب. إذا كان n هو 3 ، فسيتم طباعة 0 و 1 و 1 كأرقام فيبوناتشي بهذا الترتيب. إذا كان n هو 4 ، فسيتم طباعة 0 و 1 و 1 و 2 كأرقام فيبوناتشي بهذا الترتيب. إذا كان n هو 5 ، فسيتم طباعة 0 و 1 و 1 و 2 و 3 كأرقام فيبوناتشي ، بهذا الترتيب. إذا كان n هو 6 ، فسيتم طباعة 0 و 1 و 1 و 2 و 3 و 5 كأرقام فيبوناتشي ، بهذا الترتيب - وهكذا.

دالة بايثون لإنتاج أول أرقام فيبوناتشي n هي:

مواطنه فيبوناتشي ( ن ) :
arr = [ 0 ] * ( ن )
آر [ 1 ] = 1
إلى عن على أنا في نطاق ( اثنين ، ن ) :
آر [ أنا ] = ار [ أنا - 1 ] + arr [ أنا - اثنين ]
إرجاع آر

يبدأ بإنشاء مصفوفة من n من العناصر ، وكلها مهيأة إلى أصفار. ستحتوي هذه المصفوفة على أرقام فيبوناتشي. رقم فيبوناتشي الأول ، 0 ، موجود بالفعل. يتم تعيين رقم فيبوناتشي الثاني ، 1 ، بواسطة العبارة التالية (في الوظيفة). ثم هناك حلقة for ، والتي تبدأ من الفهرس 2 إلى ما قبل n مباشرة. لديها البيان:

آر [ أنا ] = ار [ أنا - 1 ] + arr [ أنا - اثنين ]

هذا يضيف الرقمين السابقين المباشرين.

رمز استدعاء الوظيفة وطباعة أول اثني عشر رقمًا فيبوناتشي يمكن أن يكون:

العدد = 12
A = فيبوناتشي (N)
لأني في النطاق (N):
طباعة (A [i] ، end = '')
مطبعة()

الخرج هو:

0 1 1 اثنين 3 5 8 13 واحد وعشرين 3. 4 55 89

إنتاج رقم واحد فيبوناتشي في وقت ثابت

توجد معادلة رياضية تربط مؤشرًا صفريًا برقم فيبوناتشي المقابل له. الصيغة هي:

لاحظ أنه في الجانب الأيمن من المعادلة ، ليس الجذر التربيعي لـ 5 مرفوعًا للقوة n ؛ إنه التعبير الموجود بين الأقواس الذي يتم رفعه للقوة n. هناك نوعان من هذه التعبيرات.

إذا كانت n تساوي 0 ، فإن Fibn سيكون 0. إذا كانت n تساوي 1 ، فإن Fibn ن سيكون 1. إذا كان n هو 2 ، فيبوناتشي ن سيكون 1. إذا كانت n تساوي 3 ، فيبوناتشي ن سيكون 2. إذا كان n هو 4 ، فيبوناتشي ن سيكون 3 - وهكذا. يمكن للقارئ التحقق من هذه الصيغة رياضيًا عن طريق استبدال قيم مختلفة لـ n وتقييمها. n هو مؤشر على أساس الصفر في هذه الصيغة.

كود Python لهذه الصيغة هو:

استيراد الرياضيات

مواطنه فيب ( ن ) :
    FibN = ( ( ( 1 + رياضيات ( 5 ) ) / اثنين ) ** ن - ( ( 1 -رياضيات ( 5 ) ) / اثنين ) ** ن ) / الرياضيات ( 5 )
إرجاع FibN

تم استيراد وحدة الرياضيات. لها دالة الجذر التربيعي. عامل التشغيل ** مستخدم للطاقة. تقوم الدالة FibNo () بتنفيذ الصيغة مباشرة. المكالمة والطباعة المناسبة لوظيفة fibNo () هي:

العدد = 11
يمين = فيبنو (N)
طباعة (إعادة)

الخرج هو:

89.00000000000003

من الممكن إزالة الأرقام العشرية غير الضرورية من الإجابة. ومع ذلك ، هذا نقاش لبعض الوقت.

إذا كانت هناك حاجة لأرقام فيبوناتشي مختلفة لفهارس n مختلفة ، فيجب استدعاء الوظيفة fibNo () مرة واحدة لكل مؤشر n لإرجاع أرقام فيبوناتشي المقابلة المختلفة. يقوم البرنامج التالي بهذا من أجل الفهارس الصفرية ، من 7 إلى 9 (ضمناً):

استيراد الرياضيات

مواطنه فيب ( ن ) :
    FibN = ( ( ( 1 + رياضيات ( 5 ) ) / اثنين ) ** ن - ( ( 1 -رياضيات ( 5 ) ) / اثنين ) ** ن ) / الرياضيات ( 5 )
إرجاع FibN

إلى عن على أنا في نطاق ( 7 و 10 ) :
مطبعة ( فيب ( أنا ) و نهاية = ' )
مطبعة ( )

الخرج هو:

13،000000000000002 21،000000000000004 3400000000000001

لاحظ الطريقة التي تم بها تشفير حلقة for-loop في Python. المؤشر الأول هو 7. المؤشر التالي هو 8 ، والفهرس الأخير هو 9. 10 في وسيطة النطاق هي 9 + 1. القيمة في موضع 10 يجب أن تكون آخر مؤشر على أساس الصفر زائد 1. الأول الحجة ، 7 ، هي مؤشر البداية على أساس الصفر.

استنتاج

أرقام فيبوناتشي هي سلسلة معينة من الأعداد الصحيحة (الأعداد الصحيحة الموجبة). يبدأ بـ 0 ، متبوعًا بـ 1 دون قيد أو شرط. يتم تطوير باقي الأرقام من هناك عن طريق إضافة الرقمين السابقين المباشرين.

للحصول على أول أرقام فيبوناتشي n ، اقبل 0 و 1 كأول رقمين ، ثم بالنسبة للباقي ، استخدم for-loop مع عبارة مثل:

arr [ أنا ] = ار [ أنا - 1 ] + arr [ أنا - اثنين ]

الذي يضيف الرقمين السابقين مباشرة.

للحصول على رقم فيبوناتشي واحد فقط من مؤشر n صفر ، استخدم الصيغة: