func continued_fraction(a, b, f, n = 1000, r = 1) { f(func (r) { r < n ? (a(r) / (b(r) + __FUNC__(r+1))) : 0 }(r)) } var params = Hash( "φ" => [ { 1 }, { 1 }, { 1 + _ } ], "√2" => [ { 1 }, { 2 }, { 1 + _ } ], "e" => [ { _ }, { _ }, { 1 + 1/_ } ], "π" => [ { (2*_ - 1)**2 }, { 6 }, { 3 + _ } ], "τ" => [ { _**2 }, { 2*_ + 1 }, { 8 / (1 + _) } ], ) for k in (params.keys.sort) { printf("%2s ≈ %s\n", k, continued_fraction(params{k}...)) }