Đệ quy là gì? Học về đệ quy trong JavaScript | Recursive Function

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 ก.พ. 2025

ความคิดเห็น • 61

  • @F8VNOfficial
    @F8VNOfficial  4 ปีที่แล้ว +8

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

  • @TruongNguyen-rk8vt
    @TruongNguyen-rk8vt 4 ปีที่แล้ว +11

    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
    @charlies1517 7 หลายเดือนก่อน +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

  • @quangminh0710
    @quangminh0710 8 หลายเดือนก่อน +1

    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.

  • @kenzotv6746
    @kenzotv6746 2 ปีที่แล้ว +2

    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 ปีที่แล้ว +1

      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

  • @phamthang6558
    @phamthang6558 2 ปีที่แล้ว +1

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

  • @deverycode
    @deverycode 4 ปีที่แล้ว +2

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

  • @royaltechandmultimedia7365
    @royaltechandmultimedia7365 4 ปีที่แล้ว +2

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

  •  3 ปีที่แล้ว

    video rất chi tiết.Like!

  • @cartoonvn1446
    @cartoonvn1446 3 ปีที่แล้ว +1

    videos hay quá anh.

  • @anhkhanhle565
    @anhkhanhle565 4 ปีที่แล้ว +1

    Dễ hiểu quá a ơi

  • @hoaimiqng
    @hoaimiqng 4 ปีที่แล้ว

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

  • @cartoonvn1446
    @cartoonvn1446 3 ปีที่แล้ว +1

    video's very good

  • @CooLee
    @CooLee 2 ปีที่แล้ว

    á 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

  • @toanpham9431
    @toanpham9431 4 ปีที่แล้ว

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

  • @duykhanhle9441
    @duykhanhle9441 4 ปีที่แล้ว

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

  • @hoaimiqng
    @hoaimiqng 4 ปีที่แล้ว

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

  • @nhano1012
    @nhano1012 4 ปีที่แล้ว +2

    Chất anh ơi :v

  • @imdoshi198
    @imdoshi198 4 ปีที่แล้ว +5

    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

  • @relaxandchill679
    @relaxandchill679 4 ปีที่แล้ว +1

    Đã xem hihi:))

  • @vuongqtvn
    @vuongqtvn 4 ปีที่แล้ว

    Anh dạy duyên ghê😂

  • @quocmai6286
    @quocmai6286 3 ปีที่แล้ว

    Good job

  • @nguyenchuong4861
    @nguyenchuong4861 4 ปีที่แล้ว

    trời intro xịn :v

  • @nghiangoquang
    @nghiangoquang 3 ปีที่แล้ว

    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

  • @auhongan23
    @auhongan23 2 ปีที่แล้ว

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

  • @sotanluy2240
    @sotanluy2240 3 ปีที่แล้ว +1

    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 ạ

  • @daominhduc1909
    @daominhduc1909 4 ปีที่แล้ว

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

  • @khanhtranphuc5193
    @khanhtranphuc5193 ปีที่แล้ว

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

  • @JeongWon98-p8u
    @JeongWon98-p8u ปีที่แล้ว

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

  • @nguyentrongtrung2029
    @nguyentrongtrung2029 2 ปีที่แล้ว +2

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

  • @phapnguyen155
    @phapnguyen155 4 ปีที่แล้ว

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

  • @vuongduy8507
    @vuongduy8507 ปีที่แล้ว

    thả ❤

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

  • @manquangduy6932
    @manquangduy6932 3 ปีที่แล้ว

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

  • @linhtranbao4732
    @linhtranbao4732 3 ปีที่แล้ว

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

  • @NamHoang-un1yu
    @NamHoang-un1yu 10 หลายเดือนก่อน

    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  10 หลายเดือนก่อน

      Để 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 10 หลายเดือนก่อน

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

    • @F8VNOfficial
      @F8VNOfficial  10 หลายเดือนก่อน

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

  • @atmanh242
    @atmanh242 3 ปีที่แล้ว

    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

  • @viewvue3744
    @viewvue3744 2 ปีที่แล้ว

    ô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

  • @huyvuong9529
    @huyvuong9529 2 ปีที่แล้ว

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

    • @F8VNOfficial
      @F8VNOfficial  2 ปีที่แล้ว

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

  • @tientruong9315
    @tientruong9315 ปีที่แล้ว

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

  • @TungPham-dt6tr
    @TungPham-dt6tr 2 ปีที่แล้ว

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

  • @coser5607
    @coser5607 3 ปีที่แล้ว

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

  • @ThangNguyen-wh2vk
    @ThangNguyen-wh2vk ปีที่แล้ว

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

  • @toainguyen1083
    @toainguyen1083 3 หลายเดือนก่อน

    Đệ quy khác với callback

  • @glorynt7925
    @glorynt7925 4 ปีที่แล้ว

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

    • @hoangnguyen-oj6bw
      @hoangnguyen-oj6bw 3 ปีที่แล้ว +2

      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 3 ปีที่แล้ว +5

      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 3 ปีที่แล้ว

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