c# - 如何在 C# 中修改这个嵌套的 for 循环?
问题描述
我正在尝试打印出一个金字塔/帕斯卡三角形,它将以 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();
}
}
}
解决方案
生成所需输出需要考虑三个主要方面:
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)
, 可以写成 3 次方 x 的形式,其中 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();
}
}
}
推荐阅读
- javascript - 是否可以在 TypeScript 中使用类型化流?
- jenkins - 在管道中使用 Jenkins 全局凭证 (Jenkinsfile)
- laravel - 向数据表显示年龄 laravel
- android - Android中简单跟踪器的正确方法?
- qt - Qt qml 错误“无法将 [未定义] 分配给 QDeclarativeGeoMapType*”
- python - SpaCy 自定义 NER 模型训练中“丢弃”的含义?
- javascript - 为什么非常简单的 javascript 代码不起作用?
- bash - 使用强制忽略停止并删除 docker 容器
- c# - 有没有办法预加载表格
- python - 如何控制特征的数量【机器学习】?