Created
          October 15, 2024 19:08 
        
      - 
      
- 
        Save nicolas-oliveira/d380b545bbe43b0f1c239d7f581f50c7 to your computer and use it in GitHub Desktop. 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | package utils | |
| // Função que calcula a raiz quadrada de um número `x` | |
| // utilizando uma abordagem iterativa. | |
| func Sqrt(x float64) float64 { | |
| // `z` é o valor inicial da raiz aproximada. Começa em 1.0. | |
| var z float64 = 1.0 | |
| // Loop que vai de 1 até o valor de `x`, realizando iterações com incrementos de 1.0. | |
| for i := 1.0; i < x; i++ { | |
| // Se o quadrado de `i` for exatamente igual a `x`, encontramos a raiz exata. | |
| if i*i == x { | |
| // `z` recebe o valor de `i`, que é a raiz quadrada exata de `x`. | |
| z = i | |
| // Sai do loop, pois já encontramos o valor da raiz. | |
| break | |
| // Se o quadrado de `i` passar de `x`, quer dizer que a raiz está entre | |
| // a iteração anterior e a atual. | |
| } else if i*i > x { | |
| // Calcula o quadrado do número anterior (`i - 1`). | |
| theta := (i - 1.0) * (i - 1.0) | |
| // Faz uma estimativa da raiz quadrada de `x`, usando a média de `x` e `theta`, dividida por duas vezes a raiz de `theta`. | |
| z = (x + theta) / (2 * Sqrt(theta)) // Note que a função `Sqrt` está sendo chamada recursivamente para calcular a raiz de `theta`. | |
| // Sai do loop após encontrar a aproximação da raiz. | |
| break | |
| } | |
| } | |
| // Retorna a raiz quadrada estimada de `x`. | |
| return z | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment