double x;
scanf(“%lf",&x);
double cube;
暂且把输入的数命名为x,所求立方根为cube,要求精度为3位小数。我们来写一段代码求出它的立方根。之前已经说过,牛顿已经给出了一个对数阶计算量的算法:二分法。
我们先来建立基本步骤。
1.认识步骤
二分法的步骤是什么?我们先自己在脑海中运行一下,比如求20的立方根:先猜20,大了;猜10,大了;猜5,大了;猜2.5,小了——就猜它和上一个数的平均数,(2.5+5)/2,3.75;3.75又大了,猜它和上一个数的平均数...
容易归纳出,我们从x开始猜,假如大了,就猜它的一半,假如小了,就猜它和它上一个数的平均数。并且之后都猜它和它上一个数的平均数。
真的是这样吗?
假如一开始是“小”呢?
ok,我们再写一个if分支,如果第一个是大,那么就像上面那样猜。如果第一个是小,那么就反过来。
看起来算法框架就此确定了。
可是,“第一次和上一个判断不同的判断”,用人的思维很好理解,简简单单,一眼看穿。但,对人简单的事情,对计算机不一定简单。为了实现这个功能,我们还得引入一个变量,姑且将它命名为int Is;每次cube的立方和x的差值,姑且命名为double margin;
Is