Hướng dẫn factorial in javascript using for loop - giai thừa trong javascript sử dụng vòng lặp for

Hướng dẫn factorial in javascript using for loop - giai thừa trong javascript sử dụng vòng lặp for

Bài viết này dựa trên tập lệnh thuật toán cơ bản của Code Camp miễn phí

Trong toán học, giai đoạn của một số nguyên không âm N có thể là một thuật toán khó khăn. Trong bài viết này, tôi sẽ giải thích ba cách tiếp cận, thứ nhất với hàm đệ quy, thứ hai sử dụng vòng lặp thời gian và thứ ba bằng cách sử dụng vòng lặp., the factorial of a non-negative integer n can be a tricky algorithm. In this article, I’m going to explain three approaches, first with the recursive function, second using a while loop and third using a for loop.

Chúng ta đã thấy một cách tiếp cận đệ quy trên một chuỗi trong bài viết trước, làm thế nào để đảo ngược một chuỗi trong JavaScript theo 3 cách khác nhau? Lần này chúng tôi sẽ áp dụng cùng một khái niệm trên một số.How to Reverse a String in JavaScript in 3 Different Ways ? This time we will apply the same concept on a number.

Thử thách thuật toán

Trả lại giai thừa của số nguyên được cung cấp.

Nếu số nguyên được biểu diễn bằng chữ N, thì một giai thừa là sản phẩm của tất cả các số nguyên dương nhỏ hơn hoặc bằng n.

Các nhân viên thường được đại diện với ký hiệu tốc ký n!n!

Ví dụ: 5! = 1 * 2 * 3 * 4 * 5 = 1205! = 1 * 2 * 3 * 4 * 5 = 120


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

Cung cấp các trường hợp thử nghiệm

  • Factorialize (0) sẽ trở lại 1 should return 1
  • Factorialize (5) sẽ trả lại 120 should return 120
  • Factorialize (10) sẽ trả lại 3628800 should return 3628800
  • Factorialize (20) sẽ trả về 2432902008176640000 should return 2432902008176640000

Điều gì là một số tất cả về?

Khi bạn thực hiện một số, bạn đang nhân số đó với mỗi số liên tiếp trừ đi một số.

Nếu số của bạn là 5, bạn sẽ có:

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

Mô hình sẽ là:

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

1. Factorial hóa một số có đệ quy

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. Factorial hóa một số với vòng lặp trong một thời gian

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. Factorial một số với một vòng lặp cho

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);

Tôi hy vọng bạn tìm thấy điều này hữu ích. Đây là một phần trong loạt bài viết của tôi Làm thế nào để giải quyết các bài viết của FCC Thuật toán trên thuật toán Camp miễn phí, trong đó tôi đề xuất một số giải pháp và giải thích từng bước những gì xảy ra dưới mui xe.

Ba cách để lặp lại một chuỗi trong JavaScriptin Bài viết này, tôi sẽ giải thích cách giải quyết Freecodecamp, lặp lại một chuỗi lặp lại một thử thách chuỗi. Điều này liên quan đến
In this article, I’ll explain how to solve freeCodeCamp’s “Repeat a string repeat a string” challenge. This involves…

Hai cách để xác nhận kết thúc của một chuỗi trong JavaScriptin Bài viết này, tôi sẽ giải thích cách giải quyết FreeCodecamp, xác nhận thử thách kết thúc.
In this article, I’ll explain how to solve freeCodeCamp’s “Confirm the Ending” challenge.

Ba cách để đảo ngược một chuỗi trong bài viết của JavaScriptthis dựa trên thuật toán cơ bản của Code Code miễn phí
This article is based on Free Code Camp Basic Algorithm Scripting “Reverse a String”

Hai cách để kiểm tra palindromes trong bài viết của JavaScriptthis dựa trên thuật toán cơ bản của Code Camp miễn phí Kiểm tra palindromes.
This article is based on Free Code Camp Basic Algorithm Scripting “Check for Palindromes”.

Ba cách để tìm từ dài nhất trong một chuỗi trong bài viết của JavaScriptthis dựa trên tập lệnh thuật toán cơ bản Camp Camp miễn phí Tìm từ dài nhất trong một chuỗi.
This article is based on Free Code Camp Basic Algorithm Scripting “Find the Longest Word in a String”.

Ba cách để tiêu đề trường hợp một câu trong bài viết của JavaScriptthis dựa trên thuật toán cơ bản Camp Camp miễn phí Trường hợp tiêu đề của một câu.
This article is based on Free Code Camp Basic Algorithm Scripting “Title Case a Sentence”.

Ba cách bạn có thể tìm thấy số lớn nhất trong một mảng bằng cách sử dụng JavaScriptin Bài viết này, tôi sẽ giải thích cách giải quyết Code Camp miễn phí Trại trả về số lớn nhất trong Thử thách Arrays. Đây…
In this article, I’m going to explain how to solve Free Code Camp’s “Return Largest Numbers in Arrays” challenge. This…

Nếu bạn có giải pháp riêng hoặc bất kỳ đề xuất nào, hãy chia sẻ chúng dưới đây trong các ý kiến.

Hoặc bạn có thể theo dõi tôi trên Medium, Twitter, GitHub và LinkedIn, ngay sau khi bạn nhấp vào trái tim xanh bên dưới ;-)Medium, Twitter, Github and LinkedIn, right after you click the green heart below ;-)

#Ở lại, #Keeponhacking & #MakeithAppen!



Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Làm thế nào để bạn làm các vòng lặp trong JavaScript?

hàm factorialize (num) {// nếu num = 0 hoặc num = 1, giai thừa sẽ trả về 1 if (num === 0 || num === 1) return 1;// Chúng tôi bắt đầu vòng lặp cho i = 4 // chúng tôi giảm i sau mỗi lần lặp cho (var i = num-1; i> = 1; i--) {// Chúng tôi lưu trữ giá trị của num ở mỗi lần lặp num= num * i;// hoặc num *= i;/* Num ...

Cú pháp của giai thừa là gì?

Một giai thừa được ký hiệu là "!".Vì vậy, giả sử, bạn muốn tìm giai thừa của số N, sau đó n!= n * (n-1) * (n-2) * (n-3)"!". So, suppose, you want to find the factorial of the number n, then n! = n * (n-1) * (n-2) * (n-3) …

Làm thế nào để bạn tìm thấy giai thừa của một chuỗi?

Tính toán của giai thừa N của N được biểu thị bằng N!và tính toán bằng cách nhân số số nguyên từ 1 với n.Công thức cho n là N! = N × (n - 1) !.Ví dụ: Nếu 8!là 40.320 thì 9 là gì !?n! = n × (n - 1)!. Example:If 8! is 40,320 then what is 9!?