fork download
  1. open Big_int
  2. let (<<) f g x = f (g x)
  3. let f =
  4. let rec aux m a b c =
  5. if m = 0 then c else aux (m - 1) b c (add_big_int (add_big_int a b) c)
  6. in function
  7. n when n < 1 -> big_int_of_int (-1)
  8. | n when n < 4 -> big_int_of_int (n - 1)
  9. | n -> aux (n - 3) zero_big_int unit_big_int (big_int_of_int 2)
  10. let g = Printf.printf "%s\t" << string_of_big_int << f
  11. let () = List.iter g [0;1;2;3;4;5;6;7;8;9;1000]
Success #stdin #stdout 0.01s 5392KB
stdin
Standard input is empty
stdout
-1	0	1	2	3	6	11	20	37	68	1258890285439289522674621215321790399357402658069918084564035590888323288383996894058630489346490443306057821146808944309219589954636534445475146599057985479816395429617207869586544429749851128733512216004490332659216184693670760709292866744282443549293609850952277