Tôi đã làm việc trên bộ mã hóa gần đây và tôi tình cờ gặp phải câu hỏi này mà tôi không thể hiểu được. Câu hỏi là tìm F (n) = f (1) + f (2) + .... + f (n) cho một "n" nhất định sao cho f (n) là ước số lẻ lớn nhất cho n. Có nhiều giải pháp nhỏ cho câu trả lời; tuy nhiên, tôi thấy giải pháp này rất hấp dẫn.Tổng số các ước số lẻ lớn nhất của số n đầu tiên
int compute(n) {
if(n==0) return 0;
long k = (n+1)/2;
return k*k + compute(n/2);
}
Tuy nhiên, tôi hoàn toàn không hiểu cách lấy mối quan hệ đệ quy từ câu lệnh vấn đề như thế này. Ai đó có thể giúp đỡ?
Có 'f' và' tính toán 'cùng một điều ở đây không? – AakashM
@Aakash: Không, chúng không phải là (nếu nó đúng), tôi đã chỉnh sửa câu hỏi. –
bạn có lỗi đánh máy: bạn đang sử dụng "N" và "n", vui lòng sửa –