chunrapeepat / 10days-basic-algorithm-course

10 Days Basic Algorithm Course (For Asking Question)
1 stars 0 forks source link

editor ถ้าแก้ด้วย recursive submitแล้วจะหมุนไม่หยุด #3

Open markkizz opened 4 years ago

markkizz commented 4 years ago

ในโจทย์ introduction ถ้าใช้ loop ปกติก็ผ่านได้ไม่มีปัญหา แต่ถ้าเป็น recursive จะหมุนไม่หยุดเลยครับ

if(n===0) {
    return 0
  } 
  else {
    return add(n-1) + n
  }
onemanking commented 4 years ago

I test in another online IDE and got the same issue na krub. I think the problem comes from the js engine

chunrapeepat commented 4 years ago

ถ้าแก้ด้วย Recursive วิธีนี้แล้วไม่ได้ทำ memoization มันจะ stack overflow ครับเพราะมัน call function ซ้อนเยอะมาก เช่น add(1000000) เป็นต้น

chunrapeepat commented 4 years ago

I test in another online IDE and got the same issue na krub. I think the problem comes from the js engine

ไม่น่าเป็นที่ JS Engine ครับ คือการ call recursive แบบนี้โดยที่ไม่ได้ memo ค่าเอาไว้ มันจะ call function recursive เยอะมากๆจน stack รับไม่ไหวครับ ถ้าอยากลองแก้ลองใช้วิธีตามนี้ดูครับ สำหรับ Recursive

https://dzone.com/articles/memoization-make-recursive-algorithms-efficient