J'ai essayé d'écrire le programme suivant en C# pour calculer pi en utilisant la récursion infinie, mais je continue de me tromper sur la division entière/double/décimale. Je n'ai vraiment aucune idée de pourquoi cela ne fonctionne pas, alors pardonnez-moi pour mon manque de compréhension des choses fortement typées, car j'apprends encore C#.Calcul de pi à l'aide de séries infinies en C#
Merci d'avance!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public static int Main(string[] args)
{
int numeratornext = 2;
int denominatornext = 5;
decimal findto = 100.0M;
decimal pi = 0.0M;
decimal halfpi = 1.0M;
int seriesnum = 1;
int seriesden = 3;
for (int i = 0; i < findto; i++)
{
halfpi += Decimal.Divide((decimal)seriesnum, (decimal)seriesden);
//System.Console.WriteLine(Decimal.Divide((decimal)seriesnum, (decimal)seriesden).ToString());
seriesnum *= numeratornext;
seriesden *= denominatornext;
numeratornext++;
denominatornext += 2;
}
pi = halfpi * 2;
System.Console.WriteLine(pi.ToString());
System.Console.ReadLine();
return 0;
}
}
}
Vous allez rencontrer des problèmes rapidement sauf si le type décimal est précision infinie parce que vous manquerez de chiffres. – staticsan
"récursivité infinie" aura presque certainement besoin d'une pile de taille infinie. Je ne suis pas au courant, de prime abord, de toute architecture qui supporte ceci :-) – paxdiablo
Vous pourriez envisager d'accéder à cette page web en code pour "récolter" pi jusqu'à un million de chiffres. Ou cet article a du code C#: http://www.omegacoder.com/?p=91 – BillW