Fibonacci n-step number sequences: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) m (→{{header|Perl 6}}: fixed 'nacci' routine) |
(added Scheme example) |
||
Line 2,902: | Line 2,902: | ||
</pre> |
</pre> |
||
'''Note:''' In Scala, ''Stream'' is a lazy list. if you don't need the sequence saved in memory, just to iterate over members, you may convert the logic to use ''Iterator'' instead of ''Stream''. |
'''Note:''' In Scala, ''Stream'' is a lazy list. if you don't need the sequence saved in memory, just to iterate over members, you may convert the logic to use ''Iterator'' instead of ''Stream''. |
||
=={{header|Scheme}}== |
|||
<lang scheme> |
|||
(import (scheme base) |
|||
(scheme write) |
|||
(srfi 1)) |
|||
;; uses n-step sequence formula to |
|||
;; continue lst until of length num |
|||
(define (n-fib lst num) |
|||
(let ((n (length lst))) |
|||
(do ((result (reverse lst) |
|||
(cons (fold + 0 (take result n)) |
|||
result))) |
|||
((= num (length result)) (reverse result))))) |
|||
;; display examples |
|||
(do ((i 2 (+ 1 i))) |
|||
((> i 4) ) |
|||
(display (string-append "n = " |
|||
(number->string i) |
|||
": ")) |
|||
(display (n-fib (cons 1 (list-tabulate (- i 1) (lambda (n) (expt 2 n)))) |
|||
15)) |
|||
(newline)) |
|||
(display "Lucas: ") |
|||
(display (n-fib '(2 1) 15)) |
|||
(newline) |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
n = 2: (1 1 2 3 5 8 13 21 34 55 89 144 233 377 610) |
|||
n = 3: (1 1 2 4 7 13 24 44 81 149 274 504 927 1705 3136) |
|||
n = 4: (1 1 2 4 8 15 29 56 108 208 401 773 1490 2872 5536) |
|||
Lucas: (2 1 3 4 7 11 18 29 47 76 123 199 322 521 843) |
|||
</pre> |
|||
=={{header|Seed7}}== |
=={{header|Seed7}}== |