Посчитать квадратный корень из числа без использования Math - C#
Формулировка задачи:
Привет всем...
Я в общем студент... И на первом занятии нам учитель задал задачку... она адресовалась к тем, кто уже знает си шарп.. я к таким не пренадлежал... но задачку запомнил.. и частенько ломаю себе голову...
Короч, тема такая....
Нужно добыть квадратный корень с числа..
Но при этом Math - библиотеку вообще не использовать...
Всё нужно сделать циклами, условиями плюсами минусами и прочим...
У кого какие мыслишки будут по этому поводу?
Решение задачи: «Посчитать квадратный корень из числа без использования Math»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Task1.Root { public static class Mathematics //(Including a root of negative numbers) { //With using recursion (alg. Newton). Every step we have lowering the power. public static double Root(double number, int rank = 2, double precision = 0.001) { int sign = GetSign(ref number, rank); double previousX = 1; double presentX; double tempPrecision = precision; if (rank == 1) return number*sign; do { presentX = ((rank - 1) * previousX + number / Root(previousX, rank - 1, precision)) / rank; tempPrecision = presentX - previousX; previousX = presentX; } while (Math.Abs(tempPrecision) > precision); // только тут вместо модуля бахните проверку на то, что больше. // А то самого ломает)) Можно так же вместо заданной точности брать до // double.Epsilon т.е. будет идентично... если стек не переполнится...)) return Root(presentX, rank - 1, precision) * sign; } /// <summary> /// Find out the sign of number and changers negative to positive /// </summary> /// <param name="num">number</param> /// <param name="rank">power of radical</param> /// <returns>sign</returns> private static int GetSign(ref double num, int rank) { if (num < 0 && rank % 2 == 1) { num *= -1; return -1; } else return 1; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д