17 lines
490 B
Text
17 lines
490 B
Text
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}...))
|
|
}
|