12345678910111213141516171819202122232425262728293031 |
- #!/usr/bin/ruby
- func continued_fraction(a, b, n=100) {
- a.run + (n > 0 ? (b.run / continued_fraction(a, b, n-1)) : 0);
- }
- var f = Hash.new(
- "√2" => [
- do { var n = 0; { n++ ? 2 : 1 } },
- { 1 },
- ],
- "e" => [
- do { var n = 0; { n++ || 2 } },
- do { var n = 0; { n++ || 1 } },
- ],
- "π" => [
- do { var n = 0; { n++ ? 6 : 3 } },
- do { var n = 0; { (2*(n++) + 1)**2 } },
- 1_000,
- ],
- "π/2" => [
- do { var n = 0; { 1/(n++ || 1) } },
- { 1 },
- 1_000,
- ]
- );
- f.each { |k,v|
- printf("%3s ≈ %.9f\n", k, continued_fraction(v...));
- };
|