方程的迭代展开

时间:2019-07-18 17:23:13

标签: c#

我正在尝试编写一种方法,该方法将对方程式进行迭代扩展,该方程式在第二次迭代后具有已定义的模式。我需要将每次迭代的结果放入List<T>中,所以我需要在每次迭代时停止。

前几个步骤如下:

Fraction step1 = whole + half;
Console.WriteLine("  1: " + step1);
Fraction step2 = whole + whole / (whole * 2 + half);
Console.WriteLine("  2: " + step2);
Fraction step3 = whole + whole / (whole * 2 + whole / (whole * 2 + half));
Console.WriteLine("  3: " + step3);
Fraction step4 = whole + whole / (whole * 2 + whole / (whole * 2 + whole / (whole * 2 + half)));
Console.WriteLine("  4: " + step4);
Fraction step5 = whole + whole / (whole * 2 + whole / (whole * 2 + whole / (whole * 2 + whole / (whole * 2 + half))));
Console.WriteLine("  5: " + step5);

基本上在每次迭代step >= 2之后,half都会被whole / (whole * 2 + half)替换,并持续n次迭代。

不过,我不确定如何在C#中编写类似的迭代方程。

说明:至少会有1000次迭代。只有第1步不遵循该模式(从技术上讲,我猜第2步不遵循该模式)。

1 个答案:

答案 0 :(得分:0)

尝试一下-

        List<Fraction> steps = new List<Fraction>();

        for (int i = 0; i < 5; i++)
        {
            if (i > 0)
                half = whole / (whole * 2 + half);
            var step = whole + half;
            steps.Add(step);
            Console.WriteLine($"   {i + 1}: {step}");
        }

所有步骤都存储在steps列表中。