freeCodeCamp/guide/arabic/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../sum-all-odd-fibonacci-numbers/index.md

6.7 KiB

title localeTitle
Sum All Odd Fibonacci Numbers Sum All Odd Fibonacci Numbers

:triangular_flag_on_post: تذكر استخدام Read-Search-Ask إذا واجهتك مشكلة. حاول إقران البرنامج :busts_in_silhouette: واكتب الكود الخاص بك :pencil:

:checkered_flag: شرح المشكلة:

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

روابط ذات صلة

:speech_balloon: تلميح: 1

للحصول على العدد التالي من السلسلة ، تحتاج إلى إضافة الرقم الحالي إلى السلسلة السابقة والذي سيعطيك الخيار التالي.

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 2

لمعرفة ما إذا كان الرقم هو حتى كل ما عليك التحقق منه هو إذا كان number % 2 == 0 .

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 3

عندما تحصل على الغريب القادم ، لا تنس أن تضيفه إلى متغير عالمي يمكن إرجاعه في النهاية. result += currNumber; سوف تفعل الخدعة.

حاول أن تحل المشكلة الآن

تنبيه المفسد!

علامة تحذير

الحل في المستقبل!

:beginner: الحل الأساسي للكود:

`function sumFibs(num) { var prevNumber = 0; var currNumber = 1; var result = 0; while (currNumber <= num) { if (currNumber % 2 !== 0) { result += currNumber; }

    currNumber += prevNumber; 
    prevNumber = currNumber - prevNumber; 
} 

return result; 

}

// test here sumFibs(4); `

:rocket: تشغيل الكود

شرح الشفرة:

  • إنشاء متغير للاحتفاظ بسجل للأرقام الحالية والسابقة بالإضافة إلى النتيجة التي سيتم إرجاعها.
  • استخدم حلقة while للتأكد من أننا لا نتجاوز الرقم المعطى كمعلمة.
  • نستخدم المعامل modulo للتحقق مما إذا كان الرقم الحالي فرديًا أو حتى. إذا كان موجودًا ، فقم بإضافته إلى النتيجة.
  • أكمل دائرة فيبوناتشي بالتناوب للحصول على الرقم التالي وقيم التبادل بعد.
  • العودة النتيجة.

روابط ذات صلة

  • شبيبة أثناء حلقة

:sunflower: حل الشفرة المتوسطة:

`function sumFibs(num) { // Perform checks for the validity of the input if (num < 0) return -1; if (num === 0 || num === 1) return 1;

// Create an array of fib numbers till num 
const arrFib = [1, 1]; 
let nextFib = 0; 

// We put the new Fibonacci numbers to the front so we 
// don't need to calculate the length of the array on each 
// iteration 
while((nextFib = arrFib[0] + arrFib[1]) <= num) { 
    arrFib.unshift(nextFib); 
} 

// Sum only the odd numbers and return the value 
return arrFib.reduce((acc, curr) => { 
    return acc + curr * (curr % 2); 
}); 

}

// test here sumFibs(4); `

:rocket: تشغيل الكود

شرح الشفرة:

  • إنشاء مجموعة من أرقام فيبوناتشي حتى الأسطوانات .
  • استخدم reduce() طريقة للعثور على مجموع أعضاء الصفيف الفردية.
  • أعد المبلغ.

روابط ذات صلة

:clipboard: ملاحظات للمساهمات:

  • :warning: لا تقم بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها مشابهة ولكن أفضل ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
  • أضف شرحًا لحلك.
  • تصنيف الحل في واحدة من الفئات التالية - الأساسي والمتوسط والمتقدم . :traffic_light:
  • الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي محتويات رئيسية ذات صلة . ( :warning: لا تزيل أي أسماء مستخدمين حالية )

نرى :point_right: Wiki Challenge Solution Template كمرجع.