首页 > 解决方案 > 方程的迭代展开

问题描述

我正在尝试编写一种方法来执行方程的迭代扩展,该方程在第二次迭代之后具有定义的模式。我需要将每次迭代的结果放入 aList<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 >= 2half都会被替换为whole / (whole * 2 + half)继续进行 n 次迭代。

不过,我不完全确定如何在 C# 中编写这样的迭代方程。

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

标签: c#

解决方案


尝试这个 -

        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列表中。


推荐阅读