لنقم بتمرين مشهور ، وقد يظهر هذا في شكل سؤال مقابلة.
سنحاول تنفيذ أرقام فيبوناتشي.
وأرقام فيبوناتشي على هذا النحو.
الرقم الأول هو صفر.
ثم الرقم الثاني هو واحد.
هم دائما يبدأون بصفر واحد.
ثم هذا ما يحدث.
نضيف صفرًا بواحد لنساوي الرقم التالي.
نضيف واحدًا بواحد ليساوي العدد التالي.
نجمع واحدًا في اثنين لنحصل على العدد التالي إلى ثلاثة لجمع العدد التالي خمسة ثمانية لإضافة العدد
التالي ، وهكذا دواليك.
كما ترون ، هذا ينمو باطراد.
حسنًا ، إنه ينمو عالياً وسريعًا حقًا.
وهذا النوع من الترقيم يظهر في الطبيعة كثيرًا.
لكنها أيضًا مشكلة مثيرة للاهتمام لأن هذه الأرقام ، على الرغم من أنها في البداية
، تنمو ببطء شديد حقًا ، فإنها تصبح أكبر وأكبر وأكبر ، وتصبح مشكلة يمكن أن تستهلك الموارد
حقًا.
لذلك هذا ما أريدك أن تفعله.
سنقوم بإنشاء دالة.
فيب.
هذا يتطلب عددًا.
وهنا سيكون هذا الرقم هو رقم مؤشر فيبوناتشي.
لذلك ، على سبيل المثال ، إذا كان الرقم 20 ، فيجب أن يحتوي على هذا.
إذا أردت ، دعنا نقول فيب 20.
هنا ، في هذه الحالة ، أريدك أن تعيد كل هذه الأرقام.
باستخدام المولد.
لذلك هذا واحد تلو الآخر حتى نصل إلى هذا الموقع.
الآن هناك طريقتان للقيام بذلك.
يمكنك أن تفعل مع القائمة ، أو يمكننا القيام بذلك باستخدام مولد.
وستلاحظ أنه باستخدام المولد ، يكون القيام به أسهل بكثير من العمل بالقائمة ،
لأنه في النهاية مع القائمة ، ستنفد الموارد.
لذا ما أريدك أن تفعله هو إخراج الأرقام التي تراها هنا حتى 20.
وإذا أردت ، يمكنك الاستمرار في زيادة هذا الرقم ومعرفة ما سيحدث.
وكمكافأة ، يمكنك محاولة تنفيذ ذلك بقائمة أيضًا.
لذلك يتم عرضه في قائمة عملاقة أيضًا.
أوقف الفيديو مؤقتًا إذا كنت تريد هنا.
خلاف ذلك ، سأستمر في الإجابة.
أولًا ، ما نريد فعله هو أن نقول إن A سيساوي صفرًا و B يساوي واحدًا.
إذن ، A و B سيكونان بداية الأعداد.
الآن هنا ، سنستخدم مولد الترتيب.
إلى الحلقة.
هذا العدد من المرات الذي سنقدم فيه الدالة.
الآن هنا.
أولاً ، أريد أن يكون b إلى الآن أو eh الآن يساوي أيًا كان B ، أي واحد و B يكون أيًا كان الرقم التالي.
تذكر القاعدة مع فيبوناتشي؟
نجمع أول عددين لنحصل على الرقم الثالث.
إذن لدينا B لنحصل على الرقم التالي ، ثم A B لنحصل على الرقم التالي.
ثم a B للحصول على الرقم التالي.
لذا فإن أول شيء أريد أن أفعله هو أن أحصل على a وأقول ، مهلا ، فقط أعطني ما هو a ثم أوقف الوظيفة مؤقتًا
حتى الجزء التالي.
بعد ذلك ، بعد انتقال الحلقة for إلى الجزء التالي ، سأقول إنني أريد A يساوي B.
وأريد أن يساوي ب أ زائد ب.
دعونا نرى ما إذا كان ذلك منطقيًا.
أنا أقول ، مرحبًا ، ارجع أو أعطي قيمة من هذه القائمة ، لذا ستكون صفرًا في البداية.
ثم أريدك أن تساوي واحدًا الآن لأننا نتحرك ثم أريد أن يساوي B واحدًا
لأن A قد تحول إلى واحد ثم السابق.
إذن B تصبح اثنين.
إذا نظرنا هنا ، هذا هو السبب في أننا نريد أن يكون لدينا A و B هنا ثم نريد نقل واحد فقط مثل
هذا.
لذلك يجب أن يظل B واحدًا.
لذا ما قد نريد فعله هنا هو عدم تعديل a.
حتى نتمكن من القيام بـ A زائد B.
إذا كيف يمكننا أن نفعل هذا؟
حسنًا ، يمكننا القول ببساطة.
دعنا نقول متغيرًا مؤقتًا وهذه درجة الحرارة ستتمسك بأي شيء كان a عندما وصلنا
إلى هنا ، وهو صفر ، ثم سنقوم بتعديل A ليساوي واحدًا ثم B سيكون بدلاً من A زائد
، ستكون B درجة الحرارة ، وهي صفر.
بالإضافة إلى كل ما كان B في الأصل ، فهو واحد.
أعلم أن هذا يمكن أن يكون مربكًا.
قد ترغب في التوقف هنا وربما الطباعة ورؤية ما يحدث بالضبط ، ولكن نأمل أن تعمل وظيفتنا
الآن.
إذا قمت الآن بعمل شيء مثل لـ x في Fib وأعطته لنفترض 100.
ودعنا نطبع الإجابة.
لذا اطبع.
X وأنا أجري هذا.
حسنًا ، انظر إلى ذلك.
أحصل على جميع أرقام فيبوناتشي الخاصة بي.
لنفعل 20 كما رأينا في المثال إذا قمت بالنقر فوق تشغيل.
حصلت على 4181.
إذن أنا في 19 لأننا نتذكر أن العد يبدأ من صفر.
لذلك من الناحية الفنية هنا ، إذا أردنا ، يمكننا عمل 21 هنا ، انقر فوق تشغيل.
وعندما حصلت على ستة ، سبعة ، ستة ، خمسة ، وهو ما حصلنا عليه هنا.
رائع جدا.
لكن يمكنك أن ترى كيف يزداد العدد بشكل كبير.
كما نزيد إلى 1000.
الآن ، إذا أردنا القيام بذلك في قائمة ، فسيبدو شيء من هذا القبيل.
دعنا ننسخ هنا.
الآن 52 مع قائمة يعني أنه يتعين علينا إضافة قائمة هنا.
وبدلاً من الاستسلام ، سنقوم بإلحاق نقطة بالنتيجة.
وسنلحق أيًا كانت القيمة ، وهي القيمة الأولية.
وبعد ذلك سنفعل نفس الشيء الذي فعلناه من قبل.
لذا بدلاً من ELT ، نلحق الآن بهذه القائمة وفي النهاية نعود.
نتيجة القائمة.
الآن ، إذا أعدت هذا ، فلنفترض فيب اثنين ونعطيه 100 ثم أنقر على تشغيل ودعنا نعلق على الأصل باستخدام
المولد.
حسنًا ، ربما يجب أن نطبع هذا ، أليس كذلك؟
لذلك دعونا نطبع.
وانقر فوق تشغيل.
حسنا.
هذه قائمة ضخمة.
الآن ، إذا أردنا أن نفعل 1000 هنا.
ترى أن؟
يستغرق الأمر وقتًا طويلاً.
ماذا لو فعلنا 10000؟
حسنا.
إنها بالتأكيد تستغرق بعض الوقت.
ويمكنك أن ترى هنا مدى صعوبة هذا العمل.
أتعلم؟
سأقوم بإيقافه.
وارجع إلى مولدنا.
طريق.
ودعنا نفعل 10000 هنا.
دعونا نرى كيف يبدو 10000 مع المولد.
حسنًا ، ما زال يعمل بجد ، لكنني لا أحتفظ بأي من هذا في الذاكرة.
نحن نأخذها واحدة تلو الأخرى ، ويمكنني التصرف على أساسها في حالتنا ، فقط طباعتها واحدة تلو الأخرى.
الآن هذا سؤال مقابلة شائع.
أعتقد أن الأمر محير قليلاً بلا داعٍ.
لكنها تظهر قوة المولدات.
قد تضطر إلى مشاهدة هذا الفيديو عدة مرات ، ولكن نأمل الآن أن تشعر ببعض الراحة عند
استخدام النطاقات وكيف يمكننا تحسين الأداء باستخدام المولدات.
سأراك في المرحلة التالية.
مع السلامة.