Đệ quy là gì? Học về đệ quy trong JavaScript | Recursive Function
👉 Xem Lộ Trình Học: fullstack.edu.vn/learning-paths
👉 Đăng Ký Học Offline Tại F8: short.f8team.dev/dang-ky-hoc-...
Trong video này mình sẽ cùng với các bạn tìm hiểu đệ quy là gì? Học về đệ quy trong JavaScript | Recursive Function
--------
Phân đoạn trong video:
00:00 - Giới thiệu
00:28 - Giải bài toán xóa phần tử trùng lặp
04:10 - Giới thiệu về đệ quy
09:52 - Ví dụ count down (đệ quy)
13:09 - Ví dụ vòng lặp (đệ quy)
17:14 - Ví dụ tính giai thừa
Anh em làm bài tập tại đây:
fullstack.edu.vn/exercises/le...
#hoclaptrinh #hoclaptrinhmienphi #javascript #frontend #backend #devops #f8
----
☻ Phần mềm sử dụng trong video:
Công cụ dịch Tiếng Anh: bit.ly/2Wsuhet
Công cụ đo đạc giao diện web: s.net.vn/D8kL
Công cụ viết CV xin việc chuyên nghiệp: mycv.vn
--------------
☻ Khóa học lập trình web MIỄN PHÍ:
Kiến thức nhập môn: fullstack.edu.vn/courses/less...
Xây dựng giao diện với HTML, CSS: fullstack.edu.vn/courses/html...
Xây dựng web responsive: fullstack.edu.vn/courses/resp...
Lập trình Javascript cơ bản: fullstack.edu.vn/courses/java...
Lập trình Javascript nâng cao: fullstack.edu.vn/courses/java...
Làm việc với Terminal & Ubuntu: fullstack.edu.vn/courses/wind...
Xây Dựng Website với ReactJS: fullstack.edu.vn/courses/reactjs
Xây dựng web với Node & Express: fullstack.edu.vn/courses/nodejs
HTML, CSS tips: fullstack.edu.vn/courses/html...
Ứng dụng cảnh báo khi sờ lên mặt: fullstack.edu.vn/courses/tool...
Xem thêm tại: fullstack.edu.vn/courses
-------------------------------------
F8 Official
(c) Sơn Đặng
Website: fullstack.edu.vn
Facebook cá nhân: / sondnf8
Nhóm Học Lập Trình Web: / f8official
Email: contact@fullstack.edu.vn
© Bản quyền thuộc về Channel F8 Official ☞ Do not Reup
© Nghiêm cấm sử dụng video nhằm mục đích thương mại dưới mọi hình thức.
Пікірлер: 59
Anh em làm bài tập tại đây: fullstack.edu.vn/exercises/lesson/246
Trước khi chưa xem video này em rất mơ hồ về Đệ Quy. Xem xong thấy nó thật dễ hiểu. Cảm ơn anh :3
bài này làm thủ công không dùng set: var mp = {} for(ele of arr){ if(mp[ele] === undefined){ console.log(ele) mp[ele] = true; } } object trong js cho phép truy cập vào phần tử undefined nên em sử dụng nó như kiểu ctdl hash map luôn
Bài giảng tuyệt quá a ơi ^^
Dễ hiểu quá a ơi
Hóng bài này lắm ròi hihi :>
videos hay quá anh.
bài toán giai thừa của anh theo em hiểu là điều kiên thoát phải là number > 1 chứ nhỉ, nếu number = 3 thì return là 3 * giaiThua(2), chạy tiếp number = 2 thì return 3 * 2 * giaiThua(1) , giaiThua(1) với điều kiện thoát là number > 1 sẽ return ra 1 nên kết quả là 3 * 2 * 1, còn với điều kiện là number > 0 thì nó là 3 * 2 * 1 * 1.
hi anh ! Trong function ở trên ấy anh. có tool nào hỗ trợ mình xem cách thằng đệ quy lưu trữ giá trị tạm thời sau mỗ lần lặp qua rồi sau đó mới nhân lại với nhau không anh ! #question
Intro mới xịn quá a ơi :))
Quả intro cực chất lượng anh ei =))))
Rất hay, ước gì anh ra khóa giải thuật :v
nhanh thật, mới đó mà có nhạc intro rồi ý, đúng là founder F8, hi
Anh này giảng dễ hiệu thiệc á
video's very good
lượt view cao ghê ý, chúc mừng anh nhé
Anh dạy duyên ghê😂
anh ơi bao giờ có khóa reactjs vậy ạ
á mình hiểu rồi, như ví dụ trên thì nó sẽ chạy đến 6* rồi chờ ở đó, tiếp đến nó gọi tiếp chính nó là tới 5* rồi lại chờ ở đó cứ như vậy nó cứ chồng lên như chồng đĩa vậy rồi đến điểm kết thúc thì lấy kết quả đó nhân ngược lại trở lên giải quyết từng cái đĩa ngược lại cho đến 6* , tức là 1*2, rồi lấy 2*3..... rồi cuối cùng lấy tổng kết quả đó nhân với 6
Good job
Đã xem hihi:))
Trong Js có thư viện hàng đợi ưu tiên ko ?
Chất anh ơi :v
Em thấy đệ quy dùng trong duyệt cây nhị phân - binary tree,...AST - abstract syntax tree...sẽ hữu ích, chứng duyệt bằng for loop thì thua :v
Cái chỗ anh giải thích phần của giai thừa là return number * giaithua(number -1) rất khó hiểu chổ đó. Anh kêu nó nhân ngược lại nhưng mà anh không chứng minh là có nhân ngược lại như vậy không. Chỗ đó nếu anh dùng Pain vẽ ra cho các bạn chắc các bạn khác xem như em sẽ hiểu. Vì anh chỉ nói cuối cùng nó sẽ lấy thằng 1 nhân ngược lên nên khi nghe sẽ khó hiểu. Nếu anh vẽ ra chắc là sẽ dễ hiểu hơn ! Mong anh vẫn ra thêm các khóa học miễn phí. Cám ơn anh !
@F8VNOfficial
2 жыл бұрын
Anh xin lỗi, khoản đệ quy nhiều khi anh cũng lú. Sau anh sẽ rút kinh nghiệm nghe. Cảm ơn em nhiều
anh ơi cho e hỏi chỗ 19:37 anh đổi tên biến num kiểu gì thế ạ
var a = 1 ; var b = 10 ; var ar = []; function mangg(x,y) { if(y-x-1>0 ) { x++; ar.push(x) console.log(ar) mangg(x,y) } return ar } console.log( mangg(a,b)) em chạy trên máy thì oke cho mọi trường hợp mà chạy trên phần bài tập thì không được .. em có sai chổ nào không ạ
chào anh, em đang gặp vấn đề tạo 1 mega submenu từ 1 mảng Mảng của em có arr = [ {id: 0, parentId: 0} , {id: 1, parentId: 0} , {id: 2 parentId: 1} , {id: 3, parentId: 2}, {id: 4, parentId: 1}, .... ]. Nếu parentId = 0 thì nó là menu cấp 1, nếu object1 có parentid = id của object2 thì object1 đó là menu cấp con của object2. Em đang hướng sử dụng đệ quy ạ :(. html code : (gọi lại hàm) em xin cảm ơn anh em
trời intro xịn :v
chỉ quan tâm intro mới :>
function giaiThua(number) { if (number >0)//xác định điểm dừng { return number * giaiThua(number -1); //ở lần lặp đầu tiên, 6 nhân với (6-1) //trong đoạn if, number nhân với giaiThua(number -1) cho đến khi giaiThua(number-1) về giá trị 1 thì dừng //return 6*5(lần 1), 30*4(lần 2), 120*3(lần 3), 720*1(lần 4) } return 1;//number ban đầu =0, return bắt đầu từ giá trị 1 } console.log(giaiThua(6)); *hiểu như này có đúng không các bác =)))))
Intro bao quát hết rồi kkk
làm sao để sửa cùng lúc 2 chữ num thành number thế ạ?
@F8VNOfficial
Жыл бұрын
Bôi đen một cái trước rồi nhấn ctrl + d nha em
thả ❤
Chạy tay bài tháp Hà Nội là ngộ ra ngay
Đệ quy là em của con rùa.
@F8VNOfficial
2 жыл бұрын
Hay quá 🤣
ông nào lấy vị dụ 10 hay 100 chắc ngồi suy nghĩ tới mọc râu luôn :v
function filterArray (start, unfiltered) { const filtered = []; function includes(element, testArray) { for (const value of testArray) { if (value === element) {return true} } } function filter(start, unfiltered) { if (start
có một sự thật là đệ quy nó ko có một quy chuẩn cụ thể vì mỗi bài toán sẽ có những cách gọi đệ quy khác nhau. cái chúng ta có thể biết là nguyên lý của nó.
ae lú vd cuối thì cmt mình chỉ cho cực dễ hiểu :v
alert('3*2*1 ui giời ơi tính gà lắm, chã biết)
kiểu như xây bậc thang từ trên xuống, sau đó mình sẽ đi từ dưới lên
@F8VNOfficial
3 ай бұрын
Để hiểu rõ về điều này thì cần hiểu về cấu trúc dữ liệu Stack bạn ạ. Nó gồm các ngăn theo chiều dọc theo cơ chế FILO (vào trước, ra sau). Trong đệ quy là hàm gọi lại chính nó, mà mỗi hàm được gọi sẽ được push vào Stack, nên Stack sẽ đầy dần lên cho tới khi gặp điều kiện dừng thì hàm được push sau cùng sẽ được pop khỏi Stack; cho tới khi toàn bộ hàm được pop khỏi Stack là hàm hết thúc và trả về kết quả.
@NamHoang-un1yu
3 ай бұрын
@@F8VNOfficial cảm ơn anh đã nói rõ hơn ^^
@F8VNOfficial
3 ай бұрын
@@NamHoang-un1yu Bạn có thể xem logo của Stackoverflow (tràn stack) để hình dung. Khi đệ quy gọi không có điều kiện dừng sẽ dẫn tới stackoverflow - vì kích thước của Stack có giới hạn.
ai như tôi để speed 1.5 để học nhanh hơn ko :))
@nguyenanh3941
Жыл бұрын
1.5 học quá đã 😂
Tại sao return 1 vậy mọi người
@hoangnguyen-oj6bw
3 жыл бұрын
return 1 vì 1 là kết quả cuối cùng, và nó lặp lại 1 lần nữa, vì number = 1 nên 1-1 = 0, mà điều kiện là number > 0, vì 0 > 0 xai. không thỏa mãn nên dừng vòng lặp. function giaithua(number) { if(number > 0) { return number * giai thua(number - 1); } return 1; } console.log(giaithua(3));
@hoangsondao7021
3 жыл бұрын
@@hoangnguyen-oj6bw thanks
@h_sangg9459
2 жыл бұрын
mình nghĩ như này nè: nó sẽ chạy kiểu: 6*giaithua(5), mà giaithua(5) = 5*giaithua(4),... đến khi giaithua(1)= 1*giaithua(0), thông qua kiểm tra giaithua(0) không thỏa điều kiện nên sẽ trả về 1, kết thúc quá trình
@james-rx8kw
2 жыл бұрын
@@hoangnguyen-oj6bw cho mình hỏi khúc return number * giaithua( number -1) khi gọi lại hàm giaithua(number - 1 ) thì nó sẽ gọi lại hàm mà gọi lại hàm nó là nó lại gặp return nhiều lần thì chương trình sẽ xử lí như nào ạ em k hiểu khúc này 22:53
@clover_8897
2 жыл бұрын
@@h_sangg9459 Return 1 xong thì hàm sẽ chạy ntn nữa vậy bạn? Vì mình nghĩ return 1 xong thì kết thúc hàm và trả về kết quả là 1 chứ nhỉ??? Làm sao để hàm có thể lặp lại 1 lần nữa để cho ra kết quả đúng @@