langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
11
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-1.ocaml
Normal file
11
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-1.ocaml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
let fib_iter n =
|
||||
if n < 2 then
|
||||
n
|
||||
else let fib_prev = ref 1
|
||||
and fib = ref 1 in
|
||||
for num = 2 to n - 1 do
|
||||
let temp = !fib in
|
||||
fib := !fib + !fib_prev;
|
||||
fib_prev := temp
|
||||
done;
|
||||
!fib
|
||||
5
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-2.ocaml
Normal file
5
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-2.ocaml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
let rec fib_rec n =
|
||||
if n < 2 then
|
||||
n
|
||||
else
|
||||
fib_rec (n - 1) + fib_rec (n - 2)
|
||||
7
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-3.ocaml
Normal file
7
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-3.ocaml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
let fib n =
|
||||
let rec fib_aux n a b =
|
||||
match n with
|
||||
| 0 -> a
|
||||
| _ -> fib_aux (n-1) b (a+b)
|
||||
in
|
||||
fib_aux n 0 1
|
||||
9
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-4.ocaml
Normal file
9
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-4.ocaml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
open Num
|
||||
|
||||
let fib =
|
||||
let rec fib_aux f0 f1 = function
|
||||
| 0 -> f0
|
||||
| 1 -> f1
|
||||
| n -> fib_aux f1 (f1 +/ f0) (n - 1)
|
||||
in
|
||||
fib_aux (num_of_int 0) (num_of_int 1)
|
||||
15
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-5.ocaml
Normal file
15
Task/Fibonacci-sequence/OCaml/fibonacci-sequence-5.ocaml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
open Num
|
||||
|
||||
let mul (a,b,c) (d,e,f) =
|
||||
(a*/d +/ b*/e, a*/e +/ b*/f, b*/e +/ c*/f)
|
||||
|
||||
let rec pow a n =
|
||||
if n=1 then a else
|
||||
let b = pow a (n/2) in
|
||||
if (n mod 2) = 0 then mul b b else mul a (mul b b)
|
||||
|
||||
let fib n =
|
||||
let (_,y,_) = (pow (Int 1, Int 1, Int 0) n) in
|
||||
string_of_num y
|
||||
;;
|
||||
Printf.printf "fib %d = %s\n" 300 (fib 300)
|
||||
Loading…
Add table
Add a link
Reference in a new issue