Tôi muốn một câu hỏi FizzBuzz không liên quan đến toán tử modulo. Đặc biệt là vì tôi thường phỏng vấn các nhà phát triển web mà nhà điều hành modulo không thường xuyên xuất hiện. Và nếu nó không phải là thứ bạn gặp thường xuyên, thì đó là một trong những thứ bạn phải tra cứu vài lần bạn cần.
(Đúng là, đó là một khái niệm mà lý tưởng nhất là bạn nên gặp trong một khóa học toán ở đâu đó trên đường đi, nhưng đó là một chủ đề khác.)
Vì vậy, những gì tôi nghĩ ra là cái mà tôi gọi, một cách không tưởng tượng là Threes in Reverse . Hướng dẫn là:
Viết chương trình in ra, theo thứ tự ngược lại , mọi bội số của 3 từ 1 đến 200.
Thực hiện theo thứ tự bình thường, dễ dàng: nhân chỉ số vòng lặp với 3 cho đến khi bạn đạt đến con số vượt quá 200, sau đó bỏ. Bạn không phải lo lắng về việc kết thúc bao nhiêu lần lặp, bạn cứ tiếp tục cho đến khi đạt đến giá trị đầu tiên quá cao.
Nhưng đi ngược lại, bạn phải biết bắt đầu từ đâu. Một số có thể nhận ra bằng trực giác rằng 198 (3 * 66) là bội số cao nhất của 3, và như vậy, mã cứng 66 vào vòng lặp. Những người khác có thể sử dụng một phép toán (phép chia số nguyên hoặc một tầng () trên dấu chấm động chia 200 và 3) để tìm ra con số đó và khi làm như vậy, cung cấp một cái gì đó có thể áp dụng chung hơn.
Về cơ bản, đó là một loại vấn đề giống như FizzBuzz (lặp lại các giá trị và in chúng ra, với một sự thay đổi). Đây là một vấn đề cần giải quyết mà không sử dụng bất cứ thứ gì khá bí truyền (tương đối) như hoạt động modulo.