Căn bậc n trong c

Em có tìm được một đoạn code giải thíchvề căn bậc n nhưng em chưa hiểu lắm, nên mong mọi người giải thích giúp em ạ? Và cho em hỏi thêm trong dòng return có dấu ? có nghĩa là gì ạ ?

#include <stdio.h>
double myabs(double x)
{
    return ((x>=0)?x:(-x));
}
void main()
{
    double a=2.0, xo, xn=1, e=1e-8;
    do
    {
       xo=xn;
       xn=(a/xo/xo+2.0*xo)/3.0;
    }
    while (myabs(xn-xo)>e);
    printf("Can bac 3 cua 2 = %1.8f\n",xn);
}

Câu lệnh if rút gọn. Có thể hiểu như sau:

   if (x>=0)
      return x;
   else return -x;
2 Likes

Cách giải này là cách giải “mò” kết quả.
Đưa ra 1 số giả sử là kết quả xn=1, sau đó thực hiện thay đổi (tăng) nó cho đến khi sai số nhỏ hơn 1e-8 (0.00000001).

Dấu ?: là một dạng lệnh điều kiện rút gọn gọi là tenary operator (phép toán ba ngôi).

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?