WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
WITH RECURSIVE t(a, b) AS ( VALUES (38, 12) UNION ALL SELECT least(a, b), abs(a - b) FROM t WHERE abs(a - b) > 0 ) SELECT a AS gcd FROM t WHERE a = b; * This source code was highlighted with Source Code Highlighter .
* This source code was highlighted with Source Code Highlighter .
- WITH RECURSIVE t (a, b) AS (
- VALUES (38, 12)
- UNION ALL
- SELECT b, mod (a, b) FROM t
- WHERE b> 0
- )
- SELECT a AS gcd FROM t WHERE b = 0;
* This source code was highlighted with Source Code Highlighter .
- CREATE OR REPLACE FUNCTION gcd (bigint, bigint) RETURNS bigint AS
- $$
- WITH RECURSIVE t (a, b) AS (
- VALUES (abs ($ 1) :: bigint, abs ($ 2) :: bigint
- UNION ALL
- SELECT b, mod (a, b) FROM t
- WHERE b> 0
- )
- SELECT a AS gcd FROM t WHERE b = 0;
- $$
- IMMUTABLE
- STRICT
- LANGUAGE SQL ;
Source: https://habr.com/ru/post/75743/
All Articles