我能够运行该程序,但它没有做到它应该做的事情。它一直在询问这个数字。 (以C写的)
我想要遵循的算法是 -
第1步:将guess的值设置为1.
第2步:如果|猜^ 2 - x | < ε,进入步骤4.(ε= epsilon)
步骤3:将guess的值设置为(x / guess + guess)/ 2并返回步骤2
第4步:猜测是平方根的近似值。
This is the output I am getting
#include <stdio.h>
float sqr_root(float n);
float absolute_value(float n) ;
int main(void)
{
float n ;
printf("Enter a positive number :");
scanf("%f" , &n);
printf("Square root of %f is %f \n" , n , sqr_root(n) );
}
float absolute_value(float n)
{
if (n < 0)
{
n = -n ;
}
return (n) ;
}
float sqr_root(float n)
{
const float epsilon = 0.00001 ;
float guess = 1.0 ;
float value = absolute_value( (guess * guess ) - n ) ;
while (value > epsilon )
{
guess = (( n / guess) + guess ) / 2 ;
}
return guess ;
}
答案 0 :(得分:1)
while (value > epsilon )
循环永远不会进入/结束,因为value, epsilon
不会更改值。
添加value = asolute_value( (guess * guess ) - n ) ;
以更正拼写循环。
while (value > epsilon )
{
guess = (( n / guess) + guess ) / 2 ;
value = absolute_value((guess * guess ) - n ) ;
}