Tôi nhận được câu hỏi này hôm nay trong một cuộc phỏng vấn: viết một chức năng để tính toán tổng số quà tặng nhận được cho bất kỳ ngày nào trong 12 ngày của bài hát giáng sinh. Tôi đã viết một hàm đơn giản bằng cách sử dụng vòng lặp for() trong mã ish C# 'đã hoạt động. Sau đó, người phỏng vấn yêu cầu tôi mở rộng nó cho bất kỳ số ngày nào. Cuộc hội thoại sau đó đã chuyển sang cách tối ưu hóa vòng lặp. Rõ ràng có một thủ thuật toán học thú vị sẽ làm điều này trong giới hạn của bất kỳ số nguyên nào của bạn. Bất cứ ai biết nó là gì và nó được gọi là gì? Bất kỳ ngôn ngữ nào là ok và tham chiếu đến thuật toán sẽ là tuyệt vời.Có bao nhiêu quà tặng trong 12 ngày giáng sinh nếu chúng tôi kéo dài 12 đến bất kỳ số nào?
Câu trả lời sử dụng đệ quy KHÔNG phải là những gì tôi đang tìm kiếm.
EDIT: Trả lời cho ngày 2 là tổng số 4 quà tặng, không phải 3 vì tôi sẽ có 2 Cây (1 từ hôm nay, 1 từ hôm qua) và 2 hộp mực. Vào ngày 12, tôi sẽ nhận được tổng cộng 364. Tôi muốn công thức cho phép tôi nhập 12 và nhận được 364.
Toán "lừa"? Nó không phải là một thủ thuật, đó là đại số. Vào ngày 'n', bạn nhận được quà tặng' g (n) = 1 + 2 + ... + n'. Vì vậy, trong 'N' ngày, bạn nhận được tổng số các đối tượng' T (N) = g (1) + g (2) + ... + g (N) '. –
Bạn phải biết N để mã chức năng này. –
Tất nhiên. Đây không phải là vấn đề? Để biết số lượng quà tặng trong 'N' ngày, bạn cần biết' N'. –