fork(13) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. double raiz_cuadrada(double numero,double aproximacion, int n); //Nuestra función de raiz cuadrada
  5. double raiz_cuadrada(double numero); //Nuestra función creada únicamente para iniciar la llamada
  6.  
  7. int main()
  8. {
  9. int numero=0;
  10. cout<<"Ingrese un numero";
  11. cin>>numero;
  12. double num = raiz_cuadrada(numero);
  13. cout<<"La raiz cuadrada de "<<numero<<" es: "<<raiz_cuadrada(numero);
  14. //Solo para que el programa no termine
  15. }
  16.  
  17. double raiz_cuadrada(double numero)
  18. {
  19. //Función creada, unicamente para inicar nuestro proceso, el numero inicial no importa, así que iniciamos en uno
  20. //y colocamos el contador a cero
  21. return raiz_cuadrada(numero,1,0);
  22.  
  23. }
  24.  
  25. double raiz_cuadrada(double numero,double aproximacion, int n)
  26. {
  27. //Guardamos la aproximación anterior
  28. double aproximacionantes = aproximacion;
  29.  
  30. //Utilizando la formula de Newton-Raphson
  31. aproximacion = aproximacion - (((aproximacion * aproximacion) - numero ) / ( 2 * aproximacion));
  32.  
  33. //Verificas que la aproximación haya cambiado, y cuidamos nuestro contador, para que la recursión no se trabe
  34. if(aproximacion == aproximacionantes || n > 50)
  35. return aproximacion; //Regresas la aproximación en caso de que el numero no cambie
  36.  
  37. //Llamada recursiva para calcular una nueva aproximación
  38. return raiz_cuadrada(numero,aproximacion,++n);
  39. }
  40.  
Success #stdin #stdout 0s 3344KB
stdin
Standard input is empty
stdout
Ingrese un numeroLa raiz cuadrada de 0 es: 2.22045e-16