يتم تقديم هذه الوظيفة كدالة متكررة في لغة برمجة بايثون. يطلق عليه "و" ويأخذ حجة واحدة — الرقم "ن".
ديف و (ن):
إذا ن = = 0:
عودة 1
عودة ن * و (ن-2)
الغرض من هذه الوظيفة هو حساب عامل الرقم "ن" ، أي حاصل ضرب جميع الأعداد الصحيحة من 1 إلى "ن" شاملة. ومع ذلك ، فإن حالة غريبة تجذب الانتباه: إذا كان "ن" هو 0 ، ثم وظيفة يجب أن يعود 1 دون إجراء الضرب.
بناء على ذلك ، يمكننا أن نستنتج أن الوظيفة "و" سيتم استدعاؤها لعدد معين من المرات اعتمادا على وسيطة الإدخال. لنلق نظرة على منطق الوظيفة ونجد هذا العدد من المكالمات.
- كيفية تحديد عدد المكالمات إلى وظيفة و
- الفكرة الرئيسية للمهمة
- حل المشكلة
- خوارزمية وظيفة و
- مثال على حساب عدد المكالمات إلى الدالة و
- سؤال وجواب
- كيف تعمل وظيفة و?
- كم مرة سيتم استدعاء وظيفة و إذا كانت الحجة 6?
- كم مرة سيتم استدعاء وظيفة و إذا كانت الحجة 7?
- كم مرة سيتم استدعاء وظيفة و إذا كانت الحجة 10?
كيفية تحديد عدد المكالمات إلى وظيفة و
لتحديد عدد المكالمات إلى وظيفة و ، سوف تحتاج إلى فهم منطقها وتأخذ في الاعتبار جميع الخيارات الممكنة للوسيطات مرت.
تستخدم الوظيفة و (ن) المعروضة في هذا الرمز العودية لحساب عامل الرقم. العودية هي العملية التي تستدعي بها الوظيفة نفسها. في هذه الحالة ، تتحقق الدالة مما إذا كانت الوسيطة ن يساوي صفرا. إذا كانت الإجابة بنعم ، فإنه يعود 1. خلاف ذلك ، فإنه يتضاعف ن نتيجة استدعاء الوظيفة و مع الوسيطة ن-2.
يعتمد عدد المكالمات إلى الوظيفة و على الوسيطة التي تم تمريرها ن والشروط التي بموجبها تستدعي الوظيفة نفسها.
إذا قمت بتمرير وسيطة تساوي 0 إلى الدالة و ، فسيعود البرنامج 1 ولن يستدعي الدالة مرة أخرى ، لأن الشرط إذا ن == 0: تم استيفاء الإرجاع 1.
إذا قمت بتمرير وسيطة أقل من أو تساوي 2 إلى الوظيفة و ، فسيقوم البرنامج أيضا بإرجاع 1 ولن يستدعي الوظيفة مرة أخرى ، لأن الضرب في 0 أو 1 سيعطي نفس النتيجة. على سبيل المثال ، و(2) سيعود 1.
إذا قمت بتمرير وسيطة أكبر من 2 إلى الدالة و ، فسيتم استدعاء العديد من استدعاءات الدالة العودية حتى تصبح الوسيطة أقل من أو تساوي 2. على سبيل المثال ، سوف و(4) استدعاء المكالمات الدالة التالية: و(4) -> و(2) -> و(0).
وبالتالي ، لتحديد عدد المكالمات إلى الوظيفة و ، من الضروري مراعاة المتغيرات المختلفة للوسيطات التي تم تمريرها إلى الوظيفة وحساب المكالمات وفقا لمنطق الوظيفة.
الفكرة الرئيسية للمهمة
الغرض من هذه المهمة هو تحديد عدد المرات التي يتم فيها استدعاء الوظيفة و عند استدعاؤها بوسيطة محددة ن.
الدالة و يأخذ وسيطة واحدة ن وله المنطق التالي:
- إذا كانت الوسيطة ن هو 0 ، يتم إرجاع القيمة 1.
- خلاف ذلك ، استدعاء العودية إلى وظيفة و يتم تنفيذها مع الوسيطة (ن-2).
بناء على ذلك ، يعتمد عدد المكالمات إلى الوظيفة و على قيمة الوسيطة ن.
حل المشكلة
المهمة هي لحساب قيمة وظيفة و ل معين ن.
يتم تعريف الوظيفة و على النحو التالي:
- إذا ن هو 0 ، ترجع الدالة 1.
- خلاف ذلك ، تتضاعف الوظيفة ن نتيجة استدعاء نفسها للقيمة ن-2. أي أن الوظيفة تستدعي نفسها بشكل متكرر مع الوسيطة ن - 2 ويضرب النتيجة في ن.
لحل المشكلة ، يمكنك تنفيذ وظيفة و باستخدام العودية:
ديف و (ن):
إذا ن = = 0:
عودة 1
عودة ن * و (ن-2)
عند استدعاء الدالة و (7) ، على سبيل المثال ، ستحدث المكالمات العودية التالية:
- و(7) يدعو و (5) ، منذ 7-2=5
- و(5) يسبب و (3) ، منذ 5-2=3
- و(3) يسبب و (1) ، منذ 3-2=1
- و(1) يسبب و (-1) ، منذ 1-2=-1
- منذ ن هو -1 ، ترجع الدالة 1.
وهكذا ، ل ن = 7 ، وظيفة و سيتم استدعاؤها 4 مرات.
بفضل استدعاء الدالة العودية ، يمكننا حساب قيمة ن! (مضروب) لأي غير سلبي ن.
خوارزمية وظيفة و
وظيفة و يعمل على النحو التالي:
- يقبل الحجة ن.
- يتحقق الشرط: إذا ن هو 0 ، فإنه يعود 1.
- خلاف ذلك ، تحسب الوظيفة حاصل ضرب ن ونتيجة تسمية نفسها بالحجة ن-2.
وبالتالي ، فإن الوظيفة تستدعي نفسها بشكل متكرر ، مما يقلل من قيمة ن بمقدار 2 في كل خطوة حتى تصل إلى حالة الخروج (متى ن يصبح 0).
مثال على حساب عدد المكالمات إلى الدالة و
لنفترض أن لدينا الوظيفة العودية التالية:
ديف و (ن):
إذا ن = = 0:
عودة 1
عودة ن * و (ن-2)
.
عند حساب مضروب الرقم 4.
في البداية ، سيتم استدعاء الدالة مع الوسيطة 4:
- اتصل 1:
ثم ستتحقق الوظيفة مما إذا كانت الوسيطة تساوي 0. وبما أن هذا ليس هو الحال ، وقالت انها سوف إجراء مكالمة متكررة:
- ، هذا هو
بعد ذلك ، ستتحقق الدالة مرة أخرى مما إذا كانت الوسيطة تساوي 0 وإجراء مكالمة متكررة:
- ، هذا هو
بما أن الوسيطة هي 0 ، فإن الدالة ستقوم بالعودة والعودة إلى المكالمة رقم 2:
- العودة من المكالمة 3:
- العودة من المكالمة 2:
والعودة إلى المكالمة رقم 1:
- ، هذا هو
وأخيرا ، فإنه سيتم إجراء المكالمة الأخيرة:
- ، وهو ما يساوي
وسوف يعود إلى الدعوة رقم 6:
- العودة من المكالمة 8:
- ,
.
سيتم استدعاؤه 8 مرات عند حساب عامل الرقم 4.
سؤال وجواب
كيف تعمل وظيفة و?
الدالة و يأخذ وسيطة واحدة ن. إذا ن هو 0 ، ترجع الدالة 1. خلاف ذلك ، تؤدي الوظيفة العودية بضرب ن نتيجة استدعاء الوظيفة و مع الوسيطة ن-2.
كم مرة سيتم استدعاء وظيفة و إذا كانت الحجة 6?
إذا كانت الوسيطة 6 ، فسيتم استدعاء الدالة و 3 مرات. في المكالمة الأولى ، الدالة و سوف تستدعي نفسها بشكل متكرر مع الوسيطة 4 ، ثم مع الوسيطة 2 ، وأخيرا مع الوسيطة 0. عندما تصبح الوسيطة 0 ، ترجع الدالة 1 ، وتتوقف العودية.
كم مرة سيتم استدعاء وظيفة و إذا كانت الحجة 7?
إذا كانت الوسيطة 7 ، فسيتم استدعاء الدالة و 4 مرات. في المكالمة الأولى ، الدالة و سوف تستدعي نفسها بشكل متكرر مع الوسيطة 5 ، ثم مع الوسيطة 3 ، ثم مع الوسيطة 1 ، وأخيرا مع الوسيطة -1. عندما تصبح الوسيطة سالبة ، تتوقف العودية.
كم مرة سيتم استدعاء وظيفة و إذا كانت الحجة 10?
إذا كانت الوسيطة 10 ، فسيتم استدعاء الدالة و 6 مرات. في المكالمة الأولى ، الدالة و سوف تستدعي نفسها بشكل متكرر مع الوسيطة 8 ، ثم مع الوسيطة 6 ، ثم مع الوسيطة 4 ، ثم مع الوسيطة 2 ، وأخيرا مع الوسيطة 0. عندما تصبح الوسيطة 0 ، ترجع الدالة 1 ، وتتوقف العودية.