الدالة و (ن) هي دالة رياضية تأخذ عددا طبيعيا ن كمدخل وإرجاع بعض القيمة. في المشكلة ، نعلم أن و (1) يساوي 1. ومع ذلك ، من أجل حساب قيمة و(ن) ل ن التعسفي ، نحن بحاجة إلى تطوير خوارزمية.
خوارزمية لحساب قيمة وظيفة و (ن) يمكن بناؤها باستخدام مختلف العمليات الرياضية والإنشاءات. قد تكون إحدى الخوارزميات الممكنة هي التعريف العودي للوظيفة و (ن) من خلال و (ن-1).
يمكن تعيين الخوارزمية و(ن) على النحو التالي:
- تحقق مما إذا كان ن يساوي 1. إذا كان كذلك ، ارجع 1.
- خلاف ذلك ، استدعاء وظيفة و(ن-1) وحفظ النتيجة إلى المتغير س.
- اضرب س في 2 واحفظ النتيجة في المتغير ص.
- حساب قيمة و (ن) كمجموع س و ص.
- إرجاع قيمة و (ن).
وهكذا ، نحصل على وصف حسابي للدالة و(ن) ، والذي يسمح لنا بحساب قيمته لأي عدد طبيعي ن ، بناء على القيمة المعروفة لـ و (1).
- خوارزمية لحساب وظيفة و (ن) ، حيث ن هو عدد طبيعي
- قيمة وظيفة و (1)
- وصف الخوارزمية لحساب الوظيفة
- الخطوة 1: تحديد الحالة الأساسية
- الخطوة 2: حساب قيمة دالة للقيم الوسيطة لـ ن
- الخطوة 3: الحساب التكراري لقيمة الوظيفة
- تعقيد الخوارزمية وتحسينها
- سؤال وجواب
- ما خوارزمية يمكن استخدامها لحساب قيمة وظيفة و (ن) وفقا لنسب معينة?
- كيف يمكن أن قيمة وظيفة و(ن) أن تحسب إلا إذا و (1 ) = 1 ومعروفة نسب معينة?
- كيف يمكن التعبير عن قيمة الدالة و (ن) من حيث قيم الدالة و(ن-1) و و(1)?
خوارزمية لحساب وظيفة و (ن) ، حيث ن هو عدد طبيعي
يتم تعريف هذه الوظيفة و (ن) للأعداد الطبيعية ويمكن حسابها باستخدام العلاقات التالية:
- إذا ن = 1 ، ثم و (ن) = 1.
- إذا ن حتى ، ثم و (ن) = و (ن / 2).
- إذا ن غريب ، ثم و (ن) = و (3ن + 1).
يمكن تمثيل الخوارزمية كدالة تكرارية:
وظيفة و (ن) {
إذا (ن === 1) {
عودة 1;
} آخر إذا (ن ٪ 2 = = = 0) {
العودة و (ن / 2);
} آخر {
العودة و (3 * ن + 1);
}
}
على سبيل المثال ، إذا أردنا حساب و(5) ، يمكننا تطبيق العلاقات باستمرار:
- واو(5) = واو (3 * 5 + 1 ) = و (16)
- = و (16 / 2) = و (8)
- = و (8 / 2) = و (4)
- = و (4 / 2) = و (2)
- = و (2 / 2) = و (1)
- = 1
وبالتالي ، فإن قيمة الدالة و (5) هي 1.
يمكن تحسين الخوارزمية باستخدام المذكرة لحفظ القيم المحسوبة للوظيفة.
على سبيل المثال ، يمكننا استخدام كائن لتخزين القيم المحسوبة بالفعل:
مذكرة كونست = {};
وظيفة و (ن) {
إذا (ن في المذكرة) {
عودة مذكرة [ن];
}
دع النتيجة;
إذا (ن === 1) {
النتيجة = 1;
} آخر إذا (ن ٪ 2 = = = 0) {
النتيجة = و (ن / 2);
} آخر {
النتيجة = و (3 * ن + 1);
}
مذكرة [ن] = نتيجة;
نتيجة الإرجاع;
}
وبالتالي ، نتجنب الحسابات المتكررة لقيم الوظيفة نفسها.
قيمة وظيفة و (1)
الوظيفة المحددة لها قيمة أولية: و (1) = 1.
هذا يعني أننا إذا استبدلنا الرقم 1 في الدالة و (ن),
وسوف يعود لنا النتيجة 1.
وهكذا ، و (1) = 1.
وصف الخوارزمية لحساب الوظيفة
تعتمد خوارزمية حساب الوظيفة و (ن) بنسب معينة على المكالمات العودية.
بادئ ذي بدء ، يتم تعيين الحالة الأساسية: و(1) = 1. هذا يعني أن قيمة الدالة عند ن = 1 هي 1.
ثم ، لأي ن أكبر من 1 ، يتم تنفيذ ما يلي:
- يتم حساب قيمة الدالة و (ن-1) عن طريق الاتصال المتكرر.
- يتم حساب قيمة الدالة و (ن-2) عن طريق الاتصال المتكرر.
- يتم حساب قيمة الدالة و (ن) بإضافة القيم و(ن-1) و و(ن-2).
وبالتالي ، لحساب قيمة الوظيفة و (ن) ، أين ن أكبر من 1 ، يتم حساب قيم الدوال للعددين الطبيعيين السابقين أولا ، ثم يتم إضافة القيم الناتجة معا. تستمر عملية الاستدعاءات العودية حتى يتم الوصول إلى الحالة الأساسية (ن = 1) وإرجاع القيمة 1.
باستخدام الخوارزمية لحساب الوظيفة و (ن) ، يمكنك العثور على قيمة الوظيفة لأي رقم طبيعي ن.
الخطوة 1: تحديد الحالة الأساسية
لحل مشكلة حساب قيمة الدالة و (ن) ، أين ن هو رقم طبيعي ، وفقا للنسب المعطاة ، من المهم تحديد الحالة الأساسية. الحالة الأساسية هي قيمة الوظيفة و بأقل قيمة ممكنة ن. في هذه الحالة ، يتم تعيين ذلك و (1) = 1.
تحدد الحالة الأساسية القيمة الأولية للدالة ، والتي سيتم من خلالها حساب القيم اللاحقة عند الوسيطة ن يتم زيادة. سيسمح لنا تحديد الحالة الأساسية بإنشاء قاعدة لخوارزمية متكررة لحساب قيمة الدالة.
باستخدام النسبة المعطاة و(1) = 1 ، يمكننا البدء في حل مشكلة حساب قيمة الوظيفة و (ن) لعدد طبيعي تعسفي ن.
الخطوة 2: حساب قيمة الدالة للقيم الوسيطة لـ ن
بعد تحديد قيمة الدالة و (1) = 1 ، من الضروري حساب قيمة الدالة للقيم الوسيطة لـ ن. يتم استخدام النسبة المعطاة لهذا:
و (ن) = و (ن-1) + و (ن-2)
لحساب قيمة الدالة في المراحل المتوسطة ، من الضروري معرفة قيم الدالة لـ ن-1 و ن-2.
لكل قيمة وسيطة من ن ، يتم تنفيذ الخطوات التالية:
- احسب قيمة و (ن-1) عن طريق استبدال قيمة ن-1 في الدالة.
- احسب قيمة و (ن-2) عن طريق استبدال قيمة ن-2 في الدالة.
- إضافة القيم التي تم الحصول عليها من و(ن-1) و(ن-2) للحصول على قيمة و(ن).
وبالتالي ، يتم حساب قيمة الوظيفة و(ن) بالتتابع لكل قيمة وسيطة من ن ، بدءا من و(2) وحتى القيمة المطلوبة ن.
على سبيل المثال ، لحساب قيمة و(2) ، تحتاج إلى معرفة قيم و(1) و(0). باستخدام نسبة معينة و (ن) = و (ن-1) + و (ن-2) ، نحصل على:
- و (2) = و (1) + و (0)
- و (2) = 1 + 0
- واو(2) = 1
وبالمثل ، يمكنك حساب قيم و (3) ، و(4) ، إلخ. باستخدام قيم و(1) و (2).
وبالتالي ، تتضمن الخطوة 2 حساب قيم الوظيفة بالتتابع لجميع القيم الوسيطة لـ ن ، باستخدام النسبة المعطاة و(ن) = و(ن-1) + و(ن-2).
الخطوة 3: الحساب التكراري لقيمة الوظيفة
بعد تحديد القيم الأولية للدالة ، يمكنك البدء في حساب قيمة الدالة بشكل متكرر و(ن).
الخطوة 1: تهيئة المتغيرات: ن = 1 والنتيجة = 1. هنا ن هي القيمة الحالية للوسيطة الدالة ، والنتيجة هي القيمة المحسوبة الحالية للدالة.
الخطوة 2: تحقق من الحالة: ن < = ن_ماكس (أين ن_ماكس هي القيمة القصوى لوسيطة الوظيفة التي يحددها شرط المهمة). إذا تم استيفاء الشرط ، فانتقل إلى الخطوة التالية.
الخطوة 3: احسب قيمة الدالة للقيمة الحالية للوسيطة: النتيجة = و(ن). هنا و (ن) هو تعبير يتم تعريفه من خلال حالة المشكلة.
الخطوة 4: زيادة قيمة الوسيطة بمقدار 1: ن = ن + 1.
الخطوة 5: انتقل إلى الخطوة 2.
- كرر الخطوات من 2 إلى 5 حتى يتم استيفاء الشرط من الخطوة 2.
- في نهاية التكرارات ، قيمة الدالة و (ن) للوسيطة المحددة ن سيتم حسابها وكتابتها إلى متغير النتيجة.
تعقيد الخوارزمية وتحسينها
الخوارزمية لحساب قيمة الدالة و (ن) باستخدام النسب المعطاة و (1) = 1 قد يكون لها تعقيد مختلف ، اعتمادا على طريقة تنفيذ الخوارزمية.
قد يكون استخدام العودية أحد أبسط المتغيرات في الخوارزمية. مع هذا النهج ، سيكون للخوارزمية تعقيد زمني لـ ا (ن) ، منذ ذلك الحين لحساب قيمة الدالة للرقم ن ، استدعاء دالة للرقم ن-1 ستكون مطلوبة. ومع ذلك ، لقيم كبيرة من ن ، قد تواجه الخوارزمية العودية مشكلة تجاوز مكدس الاستدعاءات.
يمكن استخدام نهج تكراري لتجنب مشاكل تجاوز سعة المكدس وتحسين الخوارزمية. في هذه الحالة ، سيكون للخوارزمية تعقيد ثابت لـ ا (1) ، لأنه سيكون كافيا بالنسبة لنا لتخزين قيمتين متتاليتين فقط لحساب قيمة الوظيفة. ستبدو الخوارزمية كما يلي:
حساب الدالة (ن) {
دع أ = 1;
دع ب = 1;
دع النتيجة = 0;
إلى عن على (دعني = 2 ؛ أنا <= ن ؛ أنا i) {
النتيجة = أ + ب;
أ = ب;
ب = النتيجة;
}
نتيجة الإرجاع;
}
مع هذا النهج ، لن تكون هناك مشاكل مع تجاوز المكدس ، وستعمل الخوارزمية بكفاءة لأي قيم ن.
سؤال وجواب
ما خوارزمية يمكن استخدامها لحساب قيمة وظيفة و (ن) وفقا لنسب معينة?
لحساب قيمة الدالة و (ن) وفقا للنسب المعطاة و (1) = 1 ، يمكن استخدام خوارزمية تكرارية. تبدأ الخوارزمية بالتحقق مما إذا كان ن يساوي 1. إذا كان الأمر كذلك ، يتم إرجاع القيمة 1. خلاف ذلك ، فإن الخوارزمية تدعو نفسها لحساب قيمة و (ن-1) ويضربها ن. وبالتالي ، فإن وظيفة و (ن) يتم حسابها عن طريق استدعاء الدالة بالتتابع و للقيمة ن-1 والضرب في ن.
كيف يمكن أن قيمة وظيفة و(ن) أن تحسب إلا إذا و (1 ) = 1 ومعروفة نسب معينة?
حساب قيمة الدالة و (ن) وفقا للنسب المعطاة و (1) = 1 ممكن باستخدام نهج تكراري. للقيام بذلك ، تحقق مما إذا كان ن يساوي 1. إذا كان الأمر كذلك ، يتم إرجاع القيمة 1. خلاف ذلك ، فإن الخوارزمية تدعو نفسها لحساب قيمة و (ن-1) ويضربها ن. وبالتالي ، فإن وظيفة و(ن) يتم حسابها عن طريق استدعاء الدالة بالتتابع و للقيمة ن-1 والضرب في ن.
كيف يمكننا التعبير عن قيمة الدالة و (ن) من حيث قيم الدالة و(ن-1) و و(1)?
معرفة القيم المعطاة للدالة و (1) = 1 والنسبة و(ن) = ن * و(ن-1) ، يمكننا التعبير عن قيمة الوظيفة و(ن) من حيث قيم الوظيفة و(ن-1) و(1). إذا ن هو 1 ، ثم قيمة و (ن) هو 1. خلاف ذلك ، يمكن الحصول على قيمة و(ن) بضرب قيمة و(ن-1) في ن. وبالتالي ، يمكن التعبير عن قيمة الوظيفة و(ن) بشكل متكرر من حيث القيم و(ن-1) و(1).