Cần giải thích đoạn code đệ quy trong javascript

function isEven(n) {
        if (n == 0) return true;
        else if (n == 1) return false;
        else if (n < 0) return isEven(-n);
        else return isEven(n -2);
        }
    
    console.log(isEven(-5));

Trường hợp n = -5 thì hàm isEven nó cho giá trị -n thành n =5. Rồi sao nữa để nó ra kết quả là false. EM không hiểu chỗ đó.

Thuật toán đơn giản là trừ đi 2. Trừ đến khi nào chỉ còn là 0 hoặc 1. Nếu còn lại 1 thì lẻ. 0 thì là chẵn

4 Likes

Không biết code này là bài tập thực hành về đệ quy hay gì mà như kiểu thích thể hiện độ phức tạp ấy nhỉ :smiley:
Chia 2 lấy dư ra là xong mà

3 Likes

Chắc là thực hành đệ quy thôi

2 Likes

Đệ quy đuôi thì dễ rồi :slight_smile: gặp return thì ngừng đệ quy hoặc quay lại với n mới thôi.

4 Likes
isEven(-5)
= isEven(5)
= isEven(3)
= isEven(1)
= false;
4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?