企业网站建设与管理作业,长宁区科技网站建设,简约风格网站设计,网站做问卷调查的问题算法描述#xff1a;这种方法比较就远了#xff0c;也可以从牛顿迭代法推导。假设x^2n #xff0c;给出n 要求x 的值。1 从一个任意的值x开始(越靠近根越好)。2 初始化y 1.3. 重复一下步骤直到求得近似值#xff1a;a) 取x和y的平均数为下一个近似的根b) y n/x不管刚开始…算法描述这种方法比较就远了也可以从牛顿迭代法推导。假设x^2n 给出n 要求x 的值。1 从一个任意的值x开始(越靠近根越好)。2 初始化y 1.3. 重复一下步骤直到求得近似值a) 取x和y的平均数为下一个近似的根b) y n/x不管刚开始xy的相差有多大最终都会想中间靠拢的最后 x*y n。例如 n50时x50 y1x25.5 y1.96078x13.7304 y3.64156x8.68597 y5.75641x7.22119 y6.92407x7.07263 y7.06951代码实现/*Returns the square root of n. Note that the function */float squareRoot(float n){/*使用n作为初始化其实还有待优化 */float x n;float y 1;float e 0.000001; /* e 确定精度 */while(x - y e){x (x y)/2;y n/x;}return x;}int main(){int n 50;printf (Square root of %d is %f, n, squareRoot(n));getchar();}例子n 4 /*n 被用作初始解 */Initialize x 4, y 1下一个近似解 x (x y)/2 ( 2.500000),y n/x (1.600000)下一个近似解 x 2.050000,y 1.951220下一个近似解 x 2.000610,y 1.999390下一个近似解 x 2.000000,y 2.000000停止 (x - y) e .如果我们可以确定n是完全平方数(解为整数)可以使用下面的方法。对于非完全平方数程序 会进入死循环unsigned int squareRoot(int n){int x n;int y 1;while(x y){x (x y)/2;y n/x;}return x;}/* 测试*/int main(){int n 49;printf ( root of %d is %d, n, squareRoot(n));getchar();}参考http://www.geeksforgeeks.org/square-root-of-a-perfect-square/