gpt4 book ai didi

C#:N For 循环

转载 作者:可可西里 更新时间:2023-11-01 08:17:54 27 4
gpt4 key购买 nike

我如何将此代码转换为具有 n 个嵌套的 for 循环:

            int num = 4;

for (int i = 0; i <= num; i++)
{
for (int j = 0; j + i <= num; j++)
{
for (int k = 0; i + j + k <= num; k++)
{
for (int l = 0; i + j + k + l <= num; l++)
{
Console.WriteLine(i + " " + j + " " + k + " " + l);
}
}
}
}

所以如果 num 是 2 那么就只有 2 个 for 循环;我和 j。

这不是家庭作业,我希望能反复完成。每个 Console.WriteLine() 都需要像一个元素一样存储在一起。

这个程序的输出创建了 n 维超空间 enzyme 指数。

最佳答案

好的,您想要一个非递归解决方案,它在 num 中参数化并且具有恒定数量的嵌套循环,是吗?

这是执行此操作的方法的草图。填写详细信息留作练习。

首先,我假设您有一个不可变类型“Vector”,它可以是 0 元组、1 元组、2 元组、3 元组……n 元组。

该方法接受向量的大小并返回该大小的向量序列。

IEnumerable<Vector> MakeVectors(int num)
{
Vector current = new Vector(num); // make an all-zero vector with num items.
while(true)
{
yield return current;
Vector next;
bool gotAnother = GetNextVector(current, out next);
if (!gotAnother) break;
current = next;
}
}

那里。该问题现在已简化为两个较小的问题:

1) 给定一个大小为 num 的向量,它是序列中的最后一个向量吗?

2) 如果不是,下一个向量是什么?

计算出下一个向量给定当前向量应该是非常简单的:增加最后一个槽的值。如果这使得它太大,将其设置为零并增加前一个插槽的值。重复直到找到要增加的东西。

有道理吗?

关于C#:N For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2129341/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com