اذهب إلى المحتوى

السؤال

نشر

السلام عليكم.

في المسئله الشهيره Fibonacci و التي هي عباره عن تسلسل للأعداد بنائا علي الرقمين السابقيين حيث الرقم الحالي (أو المدخل) يجب أن يساوي مجموع الرقمين السابقين.

هذه المسئله أعرف خطوات حلها. و هي كالتالي:

  1. قم بتعريف متغيريين. واحد يحمل القيمه السابقه(n1) و الثاني يحمل القيمه التي تسبقها(n2).
  2. قم بأخد عدد مرات الأرقام المدخله.
  3. أنشئ حلقه تسأل المستخدم عن الرقم بنفس عدد تلك المرات (n)
  4. اذا كانت القيمه لا تساوي مجموع الرقمين السابقين, أسأله مره أخري.
  5. و اذا كانت صحيحه بالفعل:
    1. أجعل القيمه السابقه n1 مساويه للرقم المدخل.
    2. أجعل القيمه التي تليها n2 مساويه للقيمه n1.

لكن لم أستطيع تمثيلها ككود. و أحيانا كثيره تأتيني أفكار أو أبحث عن مسائل و أعرف طرق الحل ولا أستطيع حلها (ككود). أين المشكله هنا.

و هذا هو حلي.


// Fibonacci

let n = 5; // number of input numbers

let n1 = 0;
let n2 = 1;
for(let i=0; i<n; i++){
    do{
       input = prompt(`${n1} - ${n2}`);
    }while(input !== n1+n2);

    n1 = n2;
    n2 = input;
}

و شكرا علي مجهودكم.

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

الخطأ لديك بسيط ويجب عليك الإنتباه دائما إلى هذه المشكلة فهي شائعة.

بتاريخ 15 ساعة قال Abdelrehman Elsied:
    }while(input !== n1+n2);

لاحظ هنا في الشرط أنت تستخدم علامتي إستفهام == مع ! وهنا يتم التحقق من مجموع الرقمين وأيضا يتم التحقق من نوعهم . أى هذا الشرط أنت تعني أنك تريد التحقق من النوع numberمثلا و numberوأن لا يساوا بعضهم البعض . 

بتاريخ 15 ساعة قال Abdelrehman Elsied:
       input = prompt(`${n1} - ${n2}`);

وهنا لو لاحظت الدالة prompt تعيد الناتج كنص "string" ولكن مجموع n1 و n2 هو رقم (number) ولهذا فإن الشرط يتحقق دائما لأن النوعين ليسوا متساويين في ال input هو string والمجموع هو number .

والحل الصحيح هو تحويل ال input إلى رقم ولتحويله إلى رقم أبسط طريقه هي وضع علامة + قبل النص وهنا قبل دالة prompt هكذا :

// Fibonacci

let n = 5; // number of input numbers

let n1 = 0;
let n2 = 1;
for(let i=0; i<n; i++){
    do{
       input = +prompt(`${n1} - ${n2}`);
    }while(input !== n1+n2);

    n1 = n2;
    n2 = input;
}

والآن سيعمل معك.

انضم إلى النقاش

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

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...