fork download
  1. open Num
  2. let rec f n =
  3. let a = Array.make (n + 1) None in
  4. let (<<) i x = a.(i) <- Some x; x in
  5. let rec g n = match a.(n), n with
  6. Some x, _ -> x
  7. | _, 0 -> 0 << num_of_int 4
  8. | _, 1 -> 1 << num_of_string "17/4"
  9. | _, n -> n << (num_of_int 108) -/ (num_of_int 815) // g (n - 1) +/ (num_of_int 1500) // (g (n - 1) */ g (n - 2))
  10. in g n
  11. let (<<) f g x = f (g x)
  12. let println = print_newline << print_string << approx_num_fix 30
  13. let () =
  14. println @@ f 0;
  15. println @@ f 1;
  16. println @@ f 2;
  17. println @@ f 3;
  18. println @@ f 80;
  19.  
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
+4.000000000000000000000000000000
+4.250000000000000000000000000000
+4.470588235294117647058823529412
+4.644736842105263157894736842105
+4.999999999999999996426201795080