【C#】等差数列と等比数列を生成するメソッド
初項と公差・公比と項数を渡すと数列をList
class Model { /// <summary> /// 等差数列を生成するメソッド an = a1 + (n-1)d /// </summary> /// <param name="start">初項</param> /// <param name="difference">公差</param> /// <param name="maxGenerateNumber">項数n</param> /// <returns></returns> public List<int> GetArithmeticProgression(int start, int difference, int maxGenerateNumber) { var list = new List<int>(); for (int n = 1; n <= maxGenerateNumber; n++) list.Add(start + (n - 1) * difference); return list; } /// <summary> /// 等比数列を生成するメソッド an = a1 * r**(n-1) /// </summary> /// <param name="start">初項</param> /// <param name="ratio">公比</param> /// <param name="maxGenerateNumber">項数n</param> /// <returns></returns> public List<int> GetGeometricProgression(int start, int ratio, int maxGenerateNumber) { var list = new List<int>(); for (int n = 1; n <= maxGenerateNumber; n++) list.Add(start * (int)Math.Pow(ratio, n - 1)); return list; } }
使い方
初項-10、公差7の等差数列と、初項2、公比3の等比数列を作ります。
項数はどちらも5です。
class Program { static void Main(string[] args) { var model = new Model(); model.GetArithmeticProgression(-10, 7, 5).Select((p, i) => new { Content = p, Index = i }) .ToList().ForEach(ano => Console.WriteLine("n=" + (ano.Index + 1) + " " + ano.Content)); Console.WriteLine(); model.GetGeometricProgression(2, 3, 5).Select((p, i) => new { Content = p, Index = i }) .ToList().ForEach(ano => Console.WriteLine("n=" + (ano.Index + 1) + " " + ano.Content)); Console.ReadLine(); } }