أرقام فيبوناتشي هي تسلسل معين حيث يتم الإعلان عن القيمة الأولى مسبقًا على أنها 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 إذا كان 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 هي: يبدأ بإنشاء مصفوفة من n من العناصر ، وكلها مهيأة إلى أصفار. ستحتوي هذه المصفوفة على أرقام فيبوناتشي. رقم فيبوناتشي الأول ، 0 ، موجود بالفعل. يتم تعيين رقم فيبوناتشي الثاني ، 1 ، بواسطة العبارة التالية (في الوظيفة). ثم هناك حلقة for ، والتي تبدأ من الفهرس 2 إلى ما قبل n مباشرة. لديها البيان: هذا يضيف الرقمين السابقين المباشرين. رمز استدعاء الوظيفة وطباعة أول اثني عشر رقمًا فيبوناتشي يمكن أن يكون: العدد = 12 الخرج هو: توجد معادلة رياضية تربط مؤشرًا صفريًا برقم فيبوناتشي المقابل له. الصيغة هي: لاحظ أنه في الجانب الأيمن من المعادلة ، ليس الجذر التربيعي لـ 5 مرفوعًا للقوة n ؛ إنه التعبير الموجود بين الأقواس الذي يتم رفعه للقوة n. هناك نوعان من هذه التعبيرات. إذا كانت n تساوي 0 ، فإن Fibn سيكون 0. إذا كانت n تساوي 1 ، فإن Fibn ن سيكون 1. إذا كان n هو 2 ، فيبوناتشي ن سيكون 1. إذا كانت n تساوي 3 ، فيبوناتشي ن سيكون 2. إذا كان n هو 4 ، فيبوناتشي ن سيكون 3 - وهكذا. يمكن للقارئ التحقق من هذه الصيغة رياضيًا عن طريق استبدال قيم مختلفة لـ n وتقييمها. n هو مؤشر على أساس الصفر في هذه الصيغة. كود Python لهذه الصيغة هو: استيراد الرياضيات تم استيراد وحدة الرياضيات. لها دالة الجذر التربيعي. عامل التشغيل ** مستخدم للطاقة. تقوم الدالة FibNo () بتنفيذ الصيغة مباشرة. المكالمة والطباعة المناسبة لوظيفة fibNo () هي: العدد = 11 الخرج هو: من الممكن إزالة الأرقام العشرية غير الضرورية من الإجابة. ومع ذلك ، هذا نقاش لبعض الوقت. إذا كانت هناك حاجة لأرقام فيبوناتشي مختلفة لفهارس n مختلفة ، فيجب استدعاء الوظيفة fibNo () مرة واحدة لكل مؤشر n لإرجاع أرقام فيبوناتشي المقابلة المختلفة. يقوم البرنامج التالي بهذا من أجل الفهارس الصفرية ، من 7 إلى 9 (ضمناً): استيراد الرياضيات الخرج هو: لاحظ الطريقة التي تم بها تشفير حلقة for-loop في Python. المؤشر الأول هو 7. المؤشر التالي هو 8 ، والفهرس الأخير هو 9. 10 في وسيطة النطاق هي 9 + 1. القيمة في موضع 10 يجب أن تكون آخر مؤشر على أساس الصفر زائد 1. الأول الحجة ، 7 ، هي مؤشر البداية على أساس الصفر. أرقام فيبوناتشي هي سلسلة معينة من الأعداد الصحيحة (الأعداد الصحيحة الموجبة). يبدأ بـ 0 ، متبوعًا بـ 1 دون قيد أو شرط. يتم تطوير باقي الأرقام من هناك عن طريق إضافة الرقمين السابقين المباشرين. للحصول على أول أرقام فيبوناتشي n ، اقبل 0 و 1 كأول رقمين ، ثم بالنسبة للباقي ، استخدم for-loop مع عبارة مثل: الذي يضيف الرقمين السابقين مباشرة. للحصول على رقم فيبوناتشي واحد فقط من مؤشر n صفر ، استخدم الصيغة:
إنتاج أرقام فيبوناتشي بتوقيت O (n)
arr = [ 0 ] * ( ن )
آر [ 1 ] = 1
إلى عن على أنا في نطاق ( اثنين ، ن ) :
آر [ أنا ] = ار [ أنا - 1 ] + arr [ أنا - اثنين ]
إرجاع آر
A = فيبوناتشي (N)
لأني في النطاق (N):
طباعة (A [i] ، end = '')
مطبعة() إنتاج رقم واحد فيبوناتشي في وقت ثابت
FibN = ( ( ( 1 + رياضيات ( 5 ) ) / اثنين ) ** ن - ( ( 1 -رياضيات ( 5 ) ) / اثنين ) ** ن ) / الرياضيات ( 5 )
إرجاع FibN
يمين = فيبنو (N)
طباعة (إعادة)
FibN = ( ( ( 1 + رياضيات ( 5 ) ) / اثنين ) ** ن - ( ( 1 -رياضيات ( 5 ) ) / اثنين ) ** ن ) / الرياضيات ( 5 )
إرجاع FibN
إلى عن على أنا في نطاق ( 7 و 10 ) :
مطبعة ( فيب ( أنا ) و نهاية = ' )
مطبعة ( )
استنتاج