ثلاث طرق لتحليل رقم في JavaScript

تستند هذه المقالة إلى البرمجة النصية لخوارزمية Free Code Camp الأساسية "تحويل رقم إلى عوامل"

في الرياضيات ، يمكن أن يكون عاملي العدد الصحيح غير السالب n خوارزمية صعبة. في هذه المقالة ، سأشرح ثلاث طرق ، أولاً مع الوظيفة العودية ، والثانية باستخدام حلقة while والثالثة باستخدام حلقة for.

لقد رأينا بالفعل طريقة عودية على سلسلة في المقالة السابقة ، كيف تعكس سلسلة في جافا سكريبت في 3 طرق مختلفة؟ هذه المرة سوف نطبق نفس المفهوم على رقم.

تحدي الخوارزمية

إرجاع عاملي العدد الصحيح المقدم.

إذا تم تمثيل العدد الصحيح بالحرف n ، فإن العامل هو حاصل ضرب جميع الأعداد الصحيحة الموجبة الأصغر من أو تساوي n.

غالبًا ما يتم تمثيل العوامل المصنّعة برمز الاختزال n!

على سبيل المثال: 5! = 1 * 2 * 3 * 4 * 5 = 120

 function factorialize(num) { return num; } factorialize(5);

حالات الاختبار المقدمة

  • مضروب (0) يجب أن يعيد 1
  • عامل (5) يجب أن يعيد 120
  • يجب أن ترجع العوامل (10) 3628800
  • يجب أن تُرجع العوامل (20) 2432902008176640000

ما هو تحليل الرقم إلى عوامل؟

عند تحليل رقم إلى عوامل ، فإنك تضرب هذا الرقم في كل رقم متتالي مطروحًا منه واحدًا.

إذا كان رقمك 5 ، سيكون لديك:

5! = 5 * 4 * 3 * 2 * 1

سيكون النمط:

0! = 1 1! = 1 2! = 2 * 1 3! = 3 * 2 * 1 4! = 4 * 3 * 2 * 1 5! = 5 * 4 * 3 * 2 * 1

1. تحليل رقم باستخدام العودية

function factorialize(num) { // If the number is less than 0, reject it. if (num < 0) return -1; // If the number is 0, its factorial is 1. else if (num == 0) return 1; // Otherwise, call the recursive procedure again else { return (num * factorialize(num - 1)); /* First Part of the recursion method You need to remember that you won’t have just one call, you’ll have several nested calls Each call: num === "?" num * factorialize(num - 1) 1st call – factorialize(5) will return 5 * factorialize(5 - 1) // factorialize(4) 2nd call – factorialize(4) will return 4 * factorialize(4 - 1) // factorialize(3) 3rd call – factorialize(3) will return 3 * factorialize(3 - 1) // factorialize(2) 4th call – factorialize(2) will return 2 * factorialize(2 - 1) // factorialize(1) 5th call – factorialize(1) will return 1 * factorialize(1 - 1) // factorialize(0) Second part of the recursion method The method hits the if condition, it returns 1 which num will multiply itself with The function will exit with the total value 5th call will return (5 * (5 - 1)) // num = 5 * 4 4th call will return (20 * (4 - 1)) // num = 20 * 3 3rd call will return (60 * (3 - 1)) // num = 60 * 2 2nd call will return (120 * (2 - 1)) // num = 120 * 1 1st call will return (120) // num = 120 If we sum up all the calls in one line, we have (5 * (5 - 1) * (4 - 1) * (3 - 1) * (2 - 1)) = 5 * 4 * 3 * 2 * 1 = 120 */ } } factorialize(5);

بدون تعليقات:

function factorialize(num) { if (num < 0) return -1; else if (num == 0) return 1; else { return (num * factorialize(num - 1)); } } factorialize(5);

2. تحليل رقم باستخدام حلقة WHILE

function factorialize(num) { // Step 1. Create a variable result to store num var result = num; // If num = 0 OR num = 1, the factorial will return 1 if (num === 0 || num === 1) return 1; // Step 2. Create the WHILE loop while (num > 1) { num--; // decrementation by 1 at each iteration result = result * num; // or result *= num; /* num num-- var result result *= num 1st iteration: 5 4 5 20 = 5 * 4 2nd iteration: 4 3 20 60 = 20 * 3 3rd iteration: 3 2 60 120 = 60 * 2 4th iteration: 2 1 120 120 = 120 * 1 5th iteration: 1 0 120 End of the WHILE loop */ } // Step 3. Return the factorial of the provided integer return result; // 120 } factorialize(5);

بدون تعليقات:

function factorialize(num) { var result = num; if (num === 0 || num === 1) return 1; while (num > 1) { num--; result *= num; } return result; } factorialize(5);

3. تحليل رقم باستخدام حلقة FOR

function factorialize(num) { // If num = 0 OR num = 1, the factorial will return 1 if (num === 0 || num === 1) return 1; // We start the FOR loop with i = 4 // We decrement i after each iteration for (var i = num - 1; i >= 1; i--) { // We store the value of num at each iteration num = num * i; // or num *= i; /* num var i = num - 1 num *= i i-- i >= 1? 1st iteration: 5 4 = 5 - 1 20 = 5 * 4 3 yes 2nd iteration: 20 3 = 4 - 1 60 = 20 * 3 2 yes 3rd iteration: 60 2 = 3 - 1 120 = 60 * 2 1 yes 4th iteration: 120 1 = 2 - 1 120 = 120 * 1 0 no 5th iteration: 120 0 120 End of the FOR loop */ } return num; //120 } factorialize(5);

بدون تعليقات:

function factorialize(num) { if (num === 0 || num === 1) return 1; for (var i = num - 1; i >= 1; i--) { num *= i; } return num; } factorialize(5);

اتمنى ان تكون وجدت ذلك مفيدا. هذا جزء من سلسلة مقالاتي بعنوان "كيفية حل خوارزميات FCC" حول تحديات خوارزمية Free Code Camp ، حيث أقترح العديد من الحلول وأشرح خطوة بخطوة ما يحدث تحت الغطاء.

ثلاث طرق لتكرار سلسلة في JavaScript

في هذه المقالة ، سأشرح كيفية حل تحدي FreeCodeCamp "كرر سلسلة كرر سلسلة". وهذا ينطوي…

طريقتان لتأكيد نهاية سلسلة في JavaScript

في هذه المقالة ، سأشرح كيفية حل تحدي "تأكيد النهاية" الخاص بـ freeCodeCamp.

ثلاث طرق لعكس سلسلة في JavaScript

تستند هذه المقالة إلى البرمجة النصية لخوارزمية Free Code Camp الأساسية "عكس سلسلة"

طريقتان للتحقق من وجود Palindromes في JavaScript

تستند هذه المقالة إلى البرمجة النصية لخوارزمية Free Code Camp الأساسية "التحقق من وجود Palindromes".

ثلاث طرق للعثور على أطول كلمة في سلسلة في JavaScript

تستند هذه المقالة إلى البرمجة النصية لخوارزمية Free Code Camp الأساسية "العثور على أطول كلمة في سلسلة".

ثلاث طرق لعنوان الحالة جملة في JavaScript

تستند هذه المقالة إلى البرمجة النصية لخوارزمية Free Code Camp الأساسية "حالة العنوان جملة".

ثلاث طرق يمكنك من خلالها إيجاد أكبر رقم في مصفوفة باستخدام JavaScript

في هذه المقالة ، سأشرح كيفية حل تحدي "إرجاع أكبر الأرقام في المصفوفات" في Free Code Camp. هذه…

إذا كان لديك الحل الخاص بك أو أي اقتراحات ، فشاركها أدناه في التعليقات.

أو يمكنك متابعتي على Medium و Twitter و Github و LinkedIn ، مباشرة بعد النقر فوق القلب الأخضر أدناه ؛-)

# StayCurious ، # KeepOnHacking و # MakeItHappen!