File tree Expand file tree Collapse file tree 15 files changed +315
-0
lines changed Expand file tree Collapse file tree 15 files changed +315
-0
lines changed Original file line number Diff line number Diff line change 1+ int fib (int n )
2+ {
3+ if (n < 2 ) return n ;
4+ else return fib (n - 1 ) + fib (n - 2 );
5+ }
6+
7+
8+ #include <stdio.h>
9+ #include <stdlib.h>
10+ int main (int argc , char const * argv [])
11+ {
12+ printf ("%i\n" , fib (atoi (argv [1 ])));
13+ }
Original file line number Diff line number Diff line change 1+ from math import sqrt
2+ from sys import argv
3+
4+ PHI = (1 + sqrt (5 )) / 2 # golden ratio number
5+ PSI = 1 - PHI # and its complement
6+
7+ def f (n ):
8+ return round ((PHI ** n - PSI ** n ) / sqrt (5 ))
9+
10+ print (f (int (argv [1 ])))
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change 1+ let fibonacci n =
2+ let rec fastFib = function
3+ | 0 -> ( 0 I, 1 I)
4+ | n ->
5+ let fk , fk1 = fastFib ( n / 2 )
6+ let fn = fk * ( 2 I* fk1 - fk)
7+ let fn1 = ( pown fk1 2 ) + ( pown fk 2 )
8+ if n % 2 = 0
9+ then fn, fn1
10+ else fn1, fn + fn1
11+
12+ let fn , _ = fastFib n in fn
13+
14+ fsi.CommandLineArgs.[ 1 ]
15+ |> int
16+ |> fibonacci
17+ |> printfn " %A "
Original file line number Diff line number Diff line change 1+ ; ; make a function that caches its past results
2+ (define (memoize proc )
3+ (let ((cache (make-table)))
4+ (define (delegate . args )
5+ (let ((hit (lookup cache args)))
6+ (or hit
7+ (let ((result (apply proc args)))
8+ (insert! cache args result)
9+ result))))
10+ delegate))
11+
12+ ; ; GUILE specific
13+ (define make-table make-hash-table)
14+ (define lookup hash-ref)
15+ (define insert! hash-set!)
16+
17+ ; ; example
18+ (define fib (memoize (lambda (n )
19+ (if (< n 2 ) n
20+ (+ (fib (- n 1 ))
21+ (fib (- n 2 )))))))
22+
23+ (display
24+ (fib
25+ (string->number (list-ref (command-line) 1 ))))
26+ (newline)
Original file line number Diff line number Diff line change 1+ from sys import argv
2+
3+ def fib (n ):
4+ if n < 2 :
5+ return n
6+ else :
7+ return fib (n - 1 ) + fib (n - 2 )
8+
9+
10+ print (fib (int (argv [1 ])))
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change 1+ from sys import argv
2+
3+ def fibs (n ):
4+ previous = 1
5+ current = 0
6+ for _ in range (n ):
7+ previous , current = current , previous + current
8+ return current
9+
10+ print ('fibs:' , fibs (int (argv [1 ])))
11+
12+
13+ def fibo (n , prev = 1 , curr = 0 ):
14+ if n <= 0 :
15+ return curr
16+ else :
17+ return fibo (n - 1 , curr , curr + prev )
18+
19+ print ('fibo:' , fibo (int (argv [1 ])))
Original file line number Diff line number Diff line change 1+ constexpr int fibo (int n, int prev = 1 , int curr = 0 )
2+ {
3+ if (n <= 0 ) return curr;
4+ else return fibo (n - 1 , curr, prev + curr);
5+ }
6+
7+ int main ()
8+ {
9+ return fibo (40 );
10+ }
You can’t perform that action at this time.
0 commit comments