解题思路:拿到题的第一反应是递归,但是该题利用置换思想,在while循环里设置两个变量,一个用于储存上一次循环的返回值,一个用于计算下一个值。
注意事项:对于牛顿迭代公式中的首项并无要求,因此初始化设个1即可
参考代码:
#include<stdio.h>
#include<math.h>
int main()
{
int x = 0;
scanf_s("%d", &x);
float x1 = 99, x2 = 1; //这里注意设定首项时考虑到循环体里第一步便是交换值,所以要把值赋给x2,同时x1初始化时不能也赋1,否则直接跳过循环
while (fabs(x2 - x1) >= 1e-5)
{
x1 = x2;
x2 = (x1 + x / x1) / 2;
}
printf("%.3f", x2);
return 0;
}
0.0分
3 人评分
【数组的距离】 (C语言代码)浏览:607 |
C语言训练-求PI* (C语言代码)(正确结果竟然是谜一样的3.141591)浏览:1301 |
点我有惊喜!你懂得!浏览:2707 |
大神老白 (C语言代码)浏览:611 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:622 |
C语言训练-数字母 (C语言代码)浏览:585 |
A+B for Input-Output Practice (IV) (C++代码)浏览:677 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:759 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:900 |
简单的a+b (C语言代码)浏览:599 |