sadliu


私信TA

用户名:dotcpp0628815

访问量:338

签 名:

清醒 自律 知进退 明得失

等  级
排  名 4806
经  验 1570
参赛次数 0
文章发表 15
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

舞台再大,你不上台,永远是个观众;平台再好,你不参与,永远是个局外人。能力再大,你不行动,只能看着别人成功!

题目描述:

用迭代法求 平方根

公式:求a的平方根的迭代公式为: X[n+1]=(X[n]+a/X[n])/2 要求前后两次求出的差的绝对值少于0.00001。 输出保留3位小数

输入格式

X



输出格式

X的平方根



样例输入

4


样例输出

2.000


***迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。

***区分迭代和递归,迭代法使用for和while循环,而递归是函数的递归,即函数里面套用函数,在某个条件下跳出函数


代码实现

#include #include //double func(double x, int a)
//{
//	double func(double x, int a);
//	double x1 = 0, temp = x;
//	int b = a;
//	if(fabs(temp-x1) >= 1e-5)
//	{
//		x1 = x;
//		temp = (x1 + b/x1)/2;
//		temp = func(temp,b);
//	}
//	return temp;
//}


int main()
{
	double x = 1.0, x1 = 0, a;//x是后一项x[n+1],x1是前一项x[n] 
	scanf("%lf", &a);//%d,%lf不能出错,这里a用int就用%d,a用double就用%lf 
	//前后两次求出的绝对值少于0.00001,0.00001用1e-5表示,绝对值用fabs 
	while(fabs(x-x1) > 1e-5)//小于0.00001就跳出循环 
	{
		x1 = x;
		x = (x1 + a/x1)/2;
	}
	//要搞清楚的是前后两次相减实际上都是x[n+1]相减,
	//但前一项的x[n+1]是后一项的x[n] 
//	x = func(x,a);
//	printf("%.3lf", func(x,a));
	printf("%.3lf", x);
	return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区