Tiga Cara Memfaktorialisasi Angka dalam JavaScript

Artikel ini didasarkan pada Skrip Algoritma Dasar Free Code Camp "Faktorialisasi Nomor"

Dalam matematika , faktorial dari bilangan bulat non-negatif n bisa menjadi algoritma yang rumit. Pada artikel ini, saya akan menjelaskan tiga pendekatan, pertama dengan fungsi rekursif, kedua menggunakan loop sementara dan ketiga menggunakan for loop.

Kita telah melihat pendekatan rekursi pada String di artikel sebelumnya, Bagaimana Cara Membalikkan String di JavaScript dalam 3 Cara Berbeda? Kali ini kami akan menerapkan konsep yang sama pada sebuah bilangan.

Tantangan Algoritma

Kembalikan faktorial dari bilangan bulat yang diberikan.

Jika bilangan bulat diwakili dengan huruf n, faktorial adalah hasil kali dari semua bilangan bulat positif kurang dari atau sama dengan n.

Faktorial sering diwakili dengan notasi singkatan n!

Misalnya: 5! = 1 * 2 * 3 * 4 * 5 = 120

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

Kasus uji yang disediakan

  • factorialize (0) harus mengembalikan 1
  • factorialize (5) harus menghasilkan 120
  • factorialize (10) harus mengembalikan 3628800
  • factorialize (20) harus mengembalikan 2432902008176640000

Apa yang dimaksud dengan memfaktorialisasi angka?

Saat Anda memfaktorkan sebuah angka, Anda mengalikan angka itu dengan setiap angka yang berurutan dikurangi satu.

Jika nomor Anda 5, Anda akan memiliki:

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

Polanya adalah:

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

1. Faktorialisasi Angka Dengan Rekursi

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

Tanpa komentar:

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

2. Faktorialkan Angka dengan perulangan 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);

Tanpa komentar:

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

3. Faktorialkan Angka dengan loop 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);

Tanpa komentar:

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

Saya harap ini bermanfaat bagi Anda. Ini adalah bagian dari seri artikel “Cara Memecahkan Algoritme FCC” saya tentang Tantangan Algoritme Kamp Kode Gratis, di mana saya mengusulkan beberapa solusi dan menjelaskan langkah demi langkah apa yang terjadi di balik terpal.

Tiga cara untuk mengulang string dalam JavaScript

Dalam artikel ini, saya akan menjelaskan cara menyelesaikan tantangan "Repeat a string repeat a string" freeCodeCamp. Ini melibatkan…

Dua cara untuk mengonfirmasi akhir dari String di JavaScript

Dalam artikel ini, saya akan menjelaskan cara menyelesaikan tantangan "Konfirmasi Akhir" dari freeCodeCamp.

Tiga Cara Membalikkan String di JavaScript

Artikel ini didasarkan pada Skrip Algoritme Dasar Camp Kode Gratis "Membalikkan String"

Dua Cara untuk Memeriksa Palindrom di JavaScript

Artikel ini didasarkan pada Skrip Algoritma Dasar Free Code Camp "Periksa Palindrom".

Tiga Cara untuk Menemukan Kata Terpanjang dalam String di JavaScript

Artikel ini didasarkan pada Skrip Algoritma Dasar Free Code Camp "Temukan Kata Terpanjang dalam String".

Tiga Cara untuk Judul Kasus Kalimat dalam JavaScript

Artikel ini didasarkan pada Skrip Algoritma Dasar Camp Kode Gratis "Judul Kasus Kalimat".

Tiga cara untuk menemukan bilangan terbesar dalam larik menggunakan JavaScript

Dalam artikel ini, saya akan menjelaskan cara menyelesaikan tantangan "Kembalikan Angka Terbesar dalam Array" dari Camp Kode Gratis. Ini…

Jika Anda memiliki solusi atau saran Anda sendiri, bagikan di bawah di komentar.

Atau Anda dapat mengikuti saya di Medium , Twitter, Github dan LinkedIn , tepat setelah Anda mengklik ikon hati hijau di bawah ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!