我想知道是否有任何方法可以生成斐波那契数字,这个数字在简单和效率方面超过了我写的:
WITH d (seq) AS (SELECT LEVEL FROM DUAL CONNECT BY LEVEL < 195) SELECT seq,fib FROM d MODEL DIMENSION BY(seq) MEASURES(0 AS fib) RULES (fib [1] = 0,fib [2] = 1,fib [seq BETWEEN 3 AND 194] = fib[CV(seq) - 2] + fib[CV(seq) - 1],fib [seq > 194] = NULL) ORDER BY 1 / Execution Plan ---------------------------------------------------------- Plan hash value: 2245903385 --------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%cpu)| Time | --------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 13 | 2 (0)| 00:00:01 | | 1 | sql MODEL ORDERED | | 1 | 13 | | | | 2 | VIEW | | 1 | 13 | 2 (0)| 00:00:01 | |* 3 | CONNECT BY WITHOUT FILTERING| | | | | | | 4 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 | --------------------------------------------------------------------------------------- Predicate information (identified by operation id): --------------------------------------------------- 3 - filter(LEVEL<195) Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 4798 bytes sent via sql*Net to client 500 bytes received via sql*Net from client 14 sql*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 194 rows processed sql>
注意:LEVEL< 195不是任意选择的,较高的值会使算法失去精度,因此我决定不包括它们以便仅保留正确的结果.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。