public static int Root(int a)
{
int num1 = 1;
while (num1 * num1 != a)
{
num1++;
}
return num1;
}
написал метод который узнает корень, смотрю коды на форуме и люди пишут коды с лютыми вычислениями, есть ли недостатки в моем методе? за исключением того что если корень не извлекается то цикл будет работать бесконечно
C#
C# Поиск корня без Math
А у Вас за каким лешим функция извлечения корня возвращает целое значение ? Как с ней вычислить √2 ? Вот пример классической такой функции, в которой применяется древний метод нахождения квадратного корня любого неотрицательного числа:
using System;
namespace New_Project
{ public static class Program
{ public static double f(double a)
{ if (a == 0) return 0; double x = 1, xnew;
while (true) { xnew = (x + a / x) * 0.5;
if (xnew == x) return x; else x = xnew; } }
public static void Main()
{ double x; for (;;) { Console.Write("x: ");
x = Convert.ToDouble(Console.ReadLine()); if (x < 0) break;
Console.WriteLine("√x = " + f(x)); } } } }

А корень из нецелого числа как извлекать будешь?
Медленно работает. Лучше использовать метод половинного деления.
Женя Кутейко
Почему медленно?
Ваш метод находит корень целого числа перебором и является достаточно простым. Его основной недостаток заключается в том, что он не работает с нецелыми числами, а также не очень эффективен для больших значений аргумента. В случае, когда корень не является целым числом, ваш метод будет работать бесконечно, что неэффективно и неудобно.
Если вам нужно работать с нецелыми числами, то вам нужно использовать другой подход, такой как метод Ньютона или метод бисекции. Они позволяют находить корень числа с высокой точностью, но требуют больше вычислительных ресурсов.
Также следует отметить, что в C# уже есть встроенная функция Math.Sqrt(), которая находит квадратный корень числа, поэтому нет необходимости писать свою функцию, если вы хотите просто найти корень числа.
Если вам нужно работать с нецелыми числами, то вам нужно использовать другой подход, такой как метод Ньютона или метод бисекции. Они позволяют находить корень числа с высокой точностью, но требуют больше вычислительных ресурсов.
Также следует отметить, что в C# уже есть встроенная функция Math.Sqrt(), которая находит квадратный корень числа, поэтому нет необходимости писать свою функцию, если вы хотите просто найти корень числа.
Женя Кутейко
про Sqrt знал, просто хотел сам реализовать
Для вычисления функций используют разложение в ряд. Например, Тейлора.
Но помни, что некоторые математические функции процессор может вычислять аппаратно, что будет значительно быстрее.
Но помни, что некоторые математические функции процессор может вычислять аппаратно, что будет значительно быстрее.
Похожие вопросы
- Поиск решения для языка C#
- Стоит ли дальше учить C#?
- Программирование на C Sharp (C#)
- Сегодня начал учить c#, решил сделать калькулятор простой и столкнулся с такой ошибкой при компиляции, хелпуйте.
- Что лучше C# или C++?
- Зачем разбивать код в C# на отдельные классы?
- Помогите пожалуйста. Написать на C#
- Python, C, C++, C#, Что выбрать-то?
- Помогите разобраться с заданием! C#
- Стоит ли изучать c# в 13 лет?