突发奇想
昨晚哄闺女睡觉时,她突然问我:“爸爸,计算器为啥按个键就能算出开方呀?”我一拍脑门,心想对,这玩意儿到底咋工作的?我自己都说不清,还天天用!当下决定,非得自己捣鼓个简单的开方计算器出来不可,搞明白了才能给闺女讲清楚。
一头扎进去差点撞墙
说干就干,翻出笔记本就开始查。网上说法一大堆,什么“牛顿迭代法”、“二分查找”,光看名字就犯晕。我就想弄个最简单的版本,整那么复杂干

先试试最土的笨办法:靠猜!比如算25的开方,我知道是5。可要是算8的开方?我从1开始试:1×1=1(太小),2×2=4(还是小),3×3=9(又大了!)。完蛋,8在4和9中间,可3太大,2太小,卡住了。
柳暗花明又一村
笨路子走不通,只好硬着头皮研究那个“牛顿法”。看公式头大:新猜测 = (旧猜测 + 数字/旧猜测) / 2。啥玩意儿?我半信半疑,掏出口袋里的计算器当裁判。

- 第一次试验:算4的开方。 随便猜个数,.. 就2!套公式:(2 + 4/2) / 2 = (2+2)/2=2。哈,一次就中!
- 第二次挑战:算2的开方。 猜个1.5试试:(1.5 + 2/1.5) / 2 = (1.5 + 1.333...)/2 ≈ 1.4167。计算器一按√2≈1.414,有门儿!
- 第三次升级:算10的开方。 猜个3:(3 + 10/3) / 2 = (3+3.333)/2≈3.166。计算器√10≈3.162,接近!再用3.166算一遍:(3.166 + 10/3.166)/2 ≈ (3.166+3.157)/2≈3.1615,更准了!就多算几次,一次比一次靠近。
原来就是猜个差不多的数,套公式搓一搓,搓完的数字更接近答案,多搓几次就分毫不差了!像揉面团,越揉越劲道。
闺女成了第一个测试员
搞懂了原理,赶紧在电脑上敲了几行最简单的代码。写了个框框让你输入数字,一个按钮按下去就开始“搓面团”。刚写闺女跑过来问:“爸爸算出来没?”我把她抱腿上,让她自己输入个“9”。点下按钮,看那个“搓”出来的数字,从5开始变((5+9/5)/2=3.4),再变((3.4+9/3.4)/2≈3.023),再变((3.023+9/3.023)/2≈3.000),停在3上。
闺女眼睛亮亮的:“哇!它自己变到3了!” 我趁机把“猜数-搓面团”的笨办法比划给她听,她居然听懂了,拍着手说:“真好玩!爸爸,我能算100吗?”这小机灵鬼!

