Skip to main content

Posts

Showing posts from May, 2019

Recursion - Đệ quy là gì

"Recursion is when a function calls itself until it doesn't" Là một hàm gọi chính nó cho tới khi dừng. Vậy khi nào nó dừng? Khi nó thỏa điều kiện và không gọi chính nó nữa! (Duh? I'm I a joke to you) Vâng đúng là như vậy. Trong Recursion nó hai phần chính: - Base case: Trường hợp cơ bản - Tại case này, hàm sẽ không gọi lại chính nó nữa => Recursion sẽ dừng lại. - Recursive case: Trường hợp recursive - Như tên gọi, case này thì hàm sẽ tiếp tục gọi (recursive) chính nó tiếp. Ví dụ: Bằng bài toàn tìm giai thừa (factorial) function factorial(num) { if (num === 1 ) return 1 // Base case return num * factorial(num - 1 ) // Recursive case } console.log(factorial( 4 )) // 24 Để hiểu hơn, hãy xem Call stack của hàm trên: 4. factorial(1) | return 1 3. factorial(2) | return 2 * factorial(1) 2. factorial(3) | return 3 * factorial(2) 1. factorial(4) | return 4 * factorial(3) Như vậy sau khi hàm dừng recursive thì Call