根号2的求解

10 阅读1分钟

最近看到一个比较有趣的 2\sqrt2 的计算:

1\sqrt1 < 2\sqrt2 < 4\sqrt4

1 < 2\sqrt2 < 2

令: 2\sqrt2 = 1 + x ; ( 0 < x < 1)

两边平方:

2 = (1 + x)²

展开:

x² = 1 -2x

两边除以x :
x = 1/x - 2

1/x = x + 2

两边取倒:

x = 1/(x+2)

将上面结果迭代带入:

2\sqrt2 = 1 + x

连分数:

2\sqrt2 = 1 + 1/(2+1/(2+1/(2+..)))1/(2+1/(2+1/(2+..)))

使用递归代码可以很方便验证结果:

	function getSqrt(n){
		if(n <= 1){
			return 0
		}
		return 1/(2 + getSqrt(n-1))
	}
        // 简单递归 10 次
	console.log(1+ getSqrt(10))  // 1.4142136248948696

参考资源来源