Trong bài đăng này, tôi đang chia sẻ một hàm định nghĩa người dùng để tạo Chuỗi Fibonacci trong PostgreSQL.
Buổi sáng hôm nay, tôi đã bắt đầu tham gia cuộc phỏng vấn cho Nhà phát triển cơ sở dữ liệu PostgreSQL.
Nói chung, tôi đang hỏi Truy vấn SQL phức tạp, nhưng lần này tôi đã yêu cầu triển khai một số lôgic toán học như: “Viết một hàm nhỏ để tạo Chuỗi Fibonacci”.
Chuỗi Fibonacci có nghĩa là một chuỗi số trong đó mỗi số là tổng của hai số đứng trước.
ví dụ: 1, 1, 2, 3, 5, 8, 13…
Tôi đang chia sẻ giải pháp này ở đây, Nhà phát triển cơ sở dữ liệu nên chuẩn bị cho mình vì Người phỏng vấn thích, tôi có thể hỏi loại câu hỏi này.
Hàm chuỗi Fibonacci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | CREATE OR REPLACE FUNCTION fn_Fibonacci(FNum INTEGER) RETURNS SETOF INTEGER LANGUAGE SQL AS $dbrnd$ WITH RECURSIVE cte(Num1,Num2) AS ( VALUES(0,1) UNION ALL SELECT GREATEST(Num1,Num2),Num1 + Num2 AS FibonacciSeries FROM cte WHERE Num2 < FNum ) SELECT Num1 FROM cte; $dbrnd$; |
Thực thi Hàm để tạo Dòng Fibonacci tối đa 50:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SELECT *FROM fn_Fibonacci(50); fn_fibonacci -------------- 0 1 1 2 3 5 8 13 21 34 (10 rows) |