Почему программа не выдаёт результатов при определенных значениях? (формула Тейлора) - C#
Формулировка задачи:
Программа рабочая, но при вводе чисел >3, ничего не выдает. Вот код (мб дело в быдлокодской функции?)Помогите, пожалуйста!
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace sharp_1 { class Program { static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Red; System.Console.WriteLine("Введите x:"); double x; double e = 2.71828; x = Double.Parse(Console.ReadLine()); System.Console.WriteLine("Введите E (эпсилон):"); double E; E = Double.Parse(Console.ReadLine()); double sum; Console.ForegroundColor = ConsoleColor.Green; System.Console.WriteLine("По формуле Тейлора:"); sum = Teylor(x, E); System.Console.WriteLine(sum); System.Console.WriteLine("По обычной формуле:"); System.Console.WriteLine(System.Math.Pow(e, -x)); Console.ForegroundColor = ConsoleColor.Red; System.Console.WriteLine("Хотите ли продолжить? 1-да 0-нет"); int key; key = int.Parse(Console.ReadLine()); do { System.Console.WriteLine("Введите x:"); x = Double.Parse(Console.ReadLine()); System.Console.WriteLine("Введите E (эпсилон):"); E = Double.Parse(Console.ReadLine()); Console.ForegroundColor = ConsoleColor.Green; System.Console.WriteLine("По формуле Тейлора:"); sum = Teylor(x, E); System.Console.WriteLine(sum); System.Console.WriteLine("По обычной формуле:"); System.Console.WriteLine(System.Math.Pow(e, -x)); Console.ForegroundColor = ConsoleColor.Red; System.Console.WriteLine("Хотите ли продолжить? 1-да 0-нет"); key = int.Parse(Console.ReadLine()); } while (key == 1); } public static double Teylor(double x, double E) { int fact = 1; double for_x = -1; double sum = 1; double next = 1; int f = 1; while (System.Math.Abs(next) >= E) { fact *= f; next = for_x * x / fact; for_x *= (-1) * x; f++; sum += next; } return sum; } } }
Решение задачи: «Почему программа не выдаёт результатов при определенных значениях? (формула Тейлора)»
textual
Листинг программы
public static double Teylor(double x, double E) { double sum = 1; double next = 1; int f = 1; while(System.Math.Abs(next) >= E) { next = next*(-x)/ f++; sum += next; } return sum; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д