不使用math.h库,是否有可能计算两点之间的距离?我知道使用math.h库,这将是以下公式之一(欧几里得距离公式):
int Distance(int x1, int y1, int x2, int y2)
{
int dx = x2 - x1;
int dy = y2 - y1;
return sqrt(dx*dx + dy*dy);
}
然而,有没有一种方法可以做到同样的事情,但不使用平方根(这需要math.h库)?
编辑:每当我尝试以下代码时,它会给我一个浮点异常(核心已转储):
float sqrt(int x) {
int i;
float s;
s=((x/2)+x/(x/2)) / 2; /*first guess*/
for(i=1;i<=4;i++) { /*average of guesses*/
s=(s+x/s)/2;
}
return s;
}
float Distance(float x1, float y1, float x2, float y2) {
float dx = x2 - x1;
float dy = y2 - y1;
return sqrt(dx*dx + dy*dy);
}
int main() {
printf("%f", Distance(1, 2, 2, 1));
return 0;
}
math.h
是一个头文件而不是库文件,数学函数是标准C库的一部分。(很多年前,当系统更小,内存真正可以被用尽时,数学函数被分离到单独的库中,如果您不需要它,可以将其留未连接。) - This isn't my real name