昨夜无风无月


私信TA

用户名:dotcpp0612624

访问量:639

签 名:

知其不可奈何而安之若命

等  级
排  名 11245
经  验 1041
参赛次数 0
文章发表 7
年  龄 18
在职情况 学生
学  校 西安电子科技大学
专  业 计算机

  自我简介:

TA的其他文章

解题思路:拿到题的第一反应是递归,但是该题利用置换思想,在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 人评分

  评论区

  • «
  • »