Đệ 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

  • @F8VNOfficial
    @F8VNOfficial3 жыл бұрын

    Anh em làm bài tập tại đây: fullstack.edu.vn/exercises/lesson/246

  • @TruongNguyen-rk8vt
    @TruongNguyen-rk8vt3 жыл бұрын

    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

  • @charlies1517
    @charlies151725 күн бұрын

    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

  • @phamthang6558
    @phamthang65582 жыл бұрын

    Bài giảng tuyệt quá a ơi ^^

  • @anhkhanhle565
    @anhkhanhle5653 жыл бұрын

    Dễ hiểu quá a ơi

  • @deverycode
    @deverycode3 жыл бұрын

    Hóng bài này lắm ròi hihi :>

  • @cartoonvn1446
    @cartoonvn14462 жыл бұрын

    videos hay quá anh.

  • @quangminh0710
    @quangminh07102 ай бұрын

    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.

  • @imdoshi198
    @imdoshi1983 жыл бұрын

    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

  • @toanpham9431
    @toanpham94313 жыл бұрын

    Intro mới xịn quá a ơi :))

  • @duykhanhle9441
    @duykhanhle94413 жыл бұрын

    Quả intro cực chất lượng anh ei =))))

  • @royaltechandmultimedia7365
    @royaltechandmultimedia73653 жыл бұрын

    Rất hay, ước gì anh ra khóa giải thuật :v

  • @hoaimiqng
    @hoaimiqng3 жыл бұрын

    nhanh thật, mới đó mà có nhạc intro rồi ý, đúng là founder F8, hi

  • @cum9690
    @cum96909 ай бұрын

    Anh này giảng dễ hiệu thiệc á

  • @cartoonvn1446
    @cartoonvn14462 жыл бұрын

    video's very good

  • @hoaimiqng
    @hoaimiqng3 жыл бұрын

    lượt view cao ghê ý, chúc mừng anh nhé

  • @vuongqtvn
    @vuongqtvn3 жыл бұрын

    Anh dạy duyên ghê😂

  • @daominhduc1909
    @daominhduc19093 жыл бұрын

    anh ơi bao giờ có khóa reactjs vậy ạ

  • @CooLee
    @CooLee Жыл бұрын

    á 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

  • @quocmai6286
    @quocmai62862 жыл бұрын

    Good job

  • @relaxandchill679
    @relaxandchill6793 жыл бұрын

    Đã xem hihi:))

  • @auhongan23
    @auhongan232 жыл бұрын

    Trong Js có thư viện hàng đợi ưu tiên ko ?

  • @nhano1012
    @nhano10123 жыл бұрын

    Chất anh ơi :v

  • @nghiangoquang
    @nghiangoquang2 жыл бұрын

    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

  • @kenzotv6746
    @kenzotv67462 жыл бұрын

    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

    @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

  • @khanhtranphuc5193
    @khanhtranphuc5193 Жыл бұрын

    anh ơi cho e hỏi chỗ 19:37 anh đổi tên biến num kiểu gì thế ạ

  • @sotanluy2240
    @sotanluy22402 жыл бұрын

    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 ạ

  • @atmanh242
    @atmanh2423 жыл бұрын

    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

  • @nguyenchuong4861
    @nguyenchuong48613 жыл бұрын

    trời intro xịn :v

  • @phapnguyen155
    @phapnguyen1553 жыл бұрын

    chỉ quan tâm intro mới :>

  • @diennguyen03
    @diennguyen038 ай бұрын

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

  • @linhtranbao4732
    @linhtranbao47322 жыл бұрын

    Intro bao quát hết rồi kkk

  • @huyvuong9529
    @huyvuong9529 Жыл бұрын

    làm sao để sửa cùng lúc 2 chữ num thành number thế ạ?

  • @F8VNOfficial

    @F8VNOfficial

    Жыл бұрын

    Bôi đen một cái trước rồi nhấn ctrl + d nha em

  • @vuongduy8507
    @vuongduy8507 Жыл бұрын

    thả ❤

  • @manquangduy6932
    @manquangduy69322 жыл бұрын

    Chạy tay bài tháp Hà Nội là ngộ ra ngay

  • @nguyentrongtrung2029
    @nguyentrongtrung20292 жыл бұрын

    Đệ quy là em của con rùa.

  • @F8VNOfficial

    @F8VNOfficial

    2 жыл бұрын

    Hay quá 🤣

  • @viewvue3744
    @viewvue37442 жыл бұрын

    ô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

  • @clockwise9179
    @clockwise9179 Жыл бұрын

    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

  • @TungPham-dt6tr
    @TungPham-dt6tr Жыл бұрын

    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ó.

  • @tientruong9315
    @tientruong9315 Жыл бұрын

    ae lú vd cuối thì cmt mình chỉ cho cực dễ hiểu :v

  • @coser5607
    @coser56072 жыл бұрын

    alert('3*2*1 ui giời ơi tính gà lắm, chã biết)

  • @NamHoang-un1yu
    @NamHoang-un1yu3 ай бұрын

    kiểu như xây bậc thang từ trên xuống, sau đó mình sẽ đi từ dưới lên

  • @F8VNOfficial

    @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

    @NamHoang-un1yu

    3 ай бұрын

    @@F8VNOfficial cảm ơn anh đã nói rõ hơn ^^

  • @F8VNOfficial

    @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.

  • @ThangNguyen-wh2vk
    @ThangNguyen-wh2vk Жыл бұрын

    ai như tôi để speed 1.5 để học nhanh hơn ko :))

  • @nguyenanh3941

    @nguyenanh3941

    Жыл бұрын

    1.5 học quá đã 😂

  • @glorynt7925
    @glorynt79253 жыл бұрын

    Tại sao return 1 vậy mọi người

  • @hoangnguyen-oj6bw

    @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

    @hoangsondao7021

    3 жыл бұрын

    @@hoangnguyen-oj6bw thanks

  • @h_sangg9459

    @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

    @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

    @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 @@