【问题标题】:How can i modify this nested for loop in C#?如何在 C# 中修改这个嵌套的 for 循环?
【发布时间】:2021-03-21 09:46:08
【问题描述】:

我正在尝试打印一个金字塔/帕斯卡三角形,它将以 3 为一组输出。您可以在下面的示例中看到它。

                               1
                           1   3   1
                       1   3   9   3   1
                   1   3   9   27  9   3   1
               1   3   9   27  81  27  9   3   1
           1   3   9   27  81  243 81  27  9   3  1
      1    3   9   27   81  243 729 243 81  27  9  3  1
  1   3   9   27  81   243 729 2187 729 243 81 27  9  3   1

                                                                                                                 

我得到的不是上面的输出,而是:

这是我的代码:

using System;

namespace ConsoleApp
{
    class PiscalTriangle
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter length : ");
            int num = Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i < num; i++)
            {
                for (int j = num; j > i; j--)
                {
                    Console.Write("  ");
                }
                int val = 1;
                for (int j = 0; j <= i; j++)
                {
                    Console.Write(val + "   ");
                    val = val * (i - j) / (j + 1);
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

【问题讨论】:

  • 看起来你正在输出一个普通的帕斯卡三角形。你有关于“系列 3”的任何文档吗?
  • 不完全是,实际的问题是编写一个嵌套的 for 循环来打印我在我的问题中显示的输出。
  • 你能解释更多关于你想要的输出吗? - 它只是垂直向下方向乘以 3 + 水平 3 -> 1 左右的列吗?
  • 这是我想要的输出 1 1 3 1 1 3 9 3 1 1 3 9 27 9 3 1 1 3 9 27 81 27 9 3 1 1 3 9 27 81 243 81 27 9 3 1 1 3 9 27 81 243 729 243 81 27 9 3 1 1 3 9 27 81 243 729 2187 729 243 81 27 9 3 1
  • 每个下拉行应该是 3 的倍数并且是帕斯卡格式

标签: c# series pascals-triangle


【解决方案1】:

生成所需输出需要考虑三个主要方面:

  • num 变量和迭代器i 的帮助下定义的帕斯卡树的深度,范围从1 to num
  • 帕斯卡树的每一行中的元素都在序列 1,3,5,7.. 与树的深度相关时相当于2i-1。因此行值迭代器j 的范围为1 to 2i-1
  • 最后(For example 3rd row, 1 3 9 3 1)的值可以写成x的3次方,其中x从0增加到i然后减少到0

把这3个条件加起来,就可以得到我们想要的输出了。

using System;

namespace ConsoleApp
{
    class PiscalTriangle
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter length : ");
            int num = Convert.ToInt32(Console.ReadLine());
            
            for (int i = 1; i <= num; i++)
            {
                for (int j = num; j > i; j--)
                {
                    Console.Write("  ");
                }
                var x = 0;
                for (double j = 1; j <= 2*i-1; j++)
                {
                    double val = Math.Pow(3, x);
                    Console.Write(val + " ");
                    if(j < i)
                    {
                        x++;
                    }
                    else
                    {
                        x--;
                    }
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

【讨论】:

  • 请说明您执行了哪些更改。仅代码的答案不是好的答案。
  • @LasseV.Karlsen 通过在编写的代码中添加上下文来更新答案。
猜你喜欢
  • 2017-01-06
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多