Почему программа не выдаёт результатов при определенных значениях? (формула Тейлора) - 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;
}