Hỏi về đệ quy josephus

em đang học về đệ quy và bài toán josephus nhưng có chút thắc mắc
BÀI TOÁN JOSEPHUS BÌNH THƯỜNG SẼ BẮT ĐẦU TỪ 1 NÊN SẼ CÓ ĐỆ QUY LÀ ::

int josephus(int n, int k) 
{ 
if (n == 1) 
    return 1; 
else 
    return (josephus(n - 1, k) + k-1) % n + 1; 
}

nhưng nếu giả sử không bắt đầu từ 1 mà bắt đầu từ 2 thì như nào ạ
VD 1 2 3 4 5
nếu bắt đầu từ 1 sẽ ra 3
còn bắt đầu từ 2 sẽ ra 4
:((

Cộng thêm vị trí bắt đầu và chia lấy dư. Chắc vậy :thinking:

1 Like

lấy kết quả bắt đầu từ 1 rồi chuyển thành kq từ 2 thôi
1 thành 2
2 thành 3
3 thành 4
4 thành 5
5 thành 1

3 Likes

khó hỉu quá hmu hmu
:roll_eyes: :roll_eyes:

Thành một vòng tròn rồi thì bắt đầu từ chỗ nào bản chất cũng không đổi. Nên 1 thành 2, 2 thành 3, … là đúng.

3 Likes

hiểu r ạ cảm ơn a hihiihih

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?