如何修改C#中的嵌套for循环?

如何修改C#中的嵌套for循环?,c#,series,pascals-triangle,C#,Series,Pascals Triangle,我正试图打印出一个金字塔/帕斯卡三角形,它将以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

我正试图打印出一个金字塔/帕斯卡三角形,它将以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();
        }
    }
}
使用系统;
名称空间控制台
{
PiscalTriangle类
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“输入长度:”);
int num=Convert.ToInt32(Console.ReadLine());
for(int i=0;ii;j--)
{
控制台。写(“”);
}
int-val=1;

对于(int j=0;j而言,生成所需输出需要考虑三个主要方面:

  • 借助
    num
    变量和范围为
    1到num
    的迭代器
    i
    定义的pascal树的深度
  • pascal树的每一行中的元素顺序为1,3,5,7..,当与树的深度相关时,这相当于
    2i-1
    。因此行值迭代器
    j
    的范围为
    1到2i-1
  • 最后,值
    (例如第三行,1 3 9 3 1)
    ,可以以3次幂x的形式写入,其中x从
    0
    增加到
    i
    ,然后减少到
    0
通过总结这三个条件,我们可以得到我们想要的输出

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();
        }
    }
}
使用系统;
名称空间控制台
{
PiscalTriangle类
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“输入长度:”);
int num=Convert.ToInt32(Console.ReadLine());
对于(int i=1;i i;j--)
{
控制台。写(“”);
}
var x=0;

对于(double j=1;j)来说,看起来您正在输出一个正常的Pascal三角形。您有关于“系列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 3 9 27 81 243 729 243 81 27 9 3 1 3 9 27 81 243 729 2187 729 243 81 27 9 3 1每个下拉行应以帕斯卡格式乘以3(感谢一百万)。)请添加对您执行的更改的解释。仅代码答案不是好答案。@LasseV.Karlsen通过在编写的代码中添加上下文更新了答案。