nested-loops 相关问题

计算机编程中使用的逻辑结构,其中两个或多个重复语句以“嵌套”形式放置(即,一个循环位于另一个循环的主体内)。每次通过外环时,内环重复完整。

删除嵌套循环 (C#)(删除 Foreach 内部)

这是我的实体: 公开课权限 { 公共字符串权限名称{获取;放; } 公共列表控制器{获取;放; } } 公共类控制器 { 公共...

回答 2 投票 0

如何打破 JavaScript 中的嵌套循环? [已关闭]

有没有办法打破Javascript中的嵌套循环? //写入页面的链接。 对于 (var x = 0; x < Args.length; x++) { for (var Heading in Navigation.Headings) { for (var It...

回答 18 投票 0

使用向量化函数而不是循环

我的函数是这样的,它在长度不断增加的数据帧范围内取最小值,在每次迭代时长度减小的数据帧范围内取最大值。 数据框...

回答 1 投票 0

fork 嵌套循环

有人可以解释一下这个程序创建了多少个子进程吗? 答案是127,但我不明白他们是怎么得到的。 int 创建(int 数字){ 整数我; 对于(i=0;i 有人可以解释一下这个程序创建了多少个子进程吗? 答案是127,但我不明白他们是怎么得到的。 int create(int num){ int i; for(i=0;i<num;i++) fork(); } int main() { int i; fork(); for(i=0;i<4;i++) create(i); return 0; } 这听起来确实像是操作系统课程的作业问题,但这是一个有趣的问题,所以我会为您解答。首先,我们看一下代码,如下所示。从功能上来说,它是一样的,但它会让事情更容易理解。另外,首先,让我们忽略最初的 fork() 调用。如果不存在,我们将计算有多少个,然后如果我们将其添加回来,我们将拥有相同数量的进程,乘以两倍。 int main() { int i, j; // fork(); for (i = 0; i < 4; i++) { for (j = 0; j < i; j++) { fork(); } } } 现在这部分是一个数学问题,部分是一个编程问题。首先,我们需要了解当我们调用 fork() 时会发生什么。当您创建子进程时,子进程会继承其自己的所有父进程变量的副本,这些变量的当前值是进行 fork() 调用时的变量的当前值。因此,这意味着现在,父级和子级拥有具有完全相同值的完全相同变量的副本,但它们可以独立修改这些变量,并且不会相互影响。那么在下面的简单例子中, int main() { int i = 0, pid = fork(); if (pid == 0) { i = 1; } if (pid > 0) { i = 2; } } 在父母的世界中,i获取值2,在孩子的世界中i获取值1,这些现在是我们正在讨论的单独变量,因此父母可以拥有它想要的东西,孩子也可以各有所求,不冲突,皆大欢喜。 现在,为了回答您的问题,我们必须牢记这一点。因此,让我们看看在没有最初的 fork() 调用的情况下,我们首先有多少个进程。现在,父进程本身将生成 6 个子进程。对于每个过程,变量 (i,j) 将具有值 (1,0)、(2,0)、(2,1)、(3,0)、(3,1) 和 (3,2) ,分别。 因此在 (3,2) 处生成的最后一个子级将退出循环,并且不会生成更多子级。在 (3,1) 处生成的子进程将继续 for 循环,递增 j,生成另一个进程,然后两个子进程都会在 (3,2) 处看到 (i,j),退出 for 循环,然后死亡。然后我们在 (3,0) 处由父级生成了另一个子级。现在,这个孩子将继续执行 for 循环,在 (3,1) 和 (3,2) 处生成一个孩子,然后死亡,然后在 (3,1) 处生成的这个新孩子将生成另一个孩子,然后它们会死的。我认为我们可以看到这开始变得相当复杂,所以我们可以用下图来表示这种情况。 图中的每个顶点代表一个进程,标记为 p 的顶点是父进程。每条边上的有序对表示子进程生成时的 (i,j) 值。请注意我们如何对流程进行分组。在第一组中,我们有 1 个进程,接下来有 2 个进程,接下来是 4 个进程,然后是 8 个进程,现在我们应该看看事情进展如何。下一组将有 16 个进程,下一组将有 32 个进程。因此,如果我们计算所有进程(包括父进程),我们将有 64 个进程。到目前为止有意义吗? 现在让我们把最初的 fork() 回调放回去。这将导致我们刚才描述的完全相同的情况发生两次,这将给我们总共 128 个进程,包括父进程,这意味着我们已经生成了 127 个子进程. 是的,一半是数学问题,一半是编程问题。让我知道你的问题。 您可以将第一个循环重写为for (i = 1; i <= n; i++)。那么我很确定我们可以说,一般来说,您的父进程将产生 子进程,其中 如果你写 for (int i = 0; i < 4; i++) { for (int j = 0; j < i; j++) { fork(); } } 相当于 fork(); fork(); . . . fork(); 其中 N 是分叉总数,进程总数将为 2^N。由于一个进程是父进程,因此减去一,就剩下子进程的数量。 当你对大脑中的 3 个叉子进行小型模拟时,很容易找到这种逻辑 fork(); fork(); fork(); 第一个 fork 克隆了父进程,我们最终得到了两个相同的进程,它们都将继续执行程序中的下一个 fork。你可以把它想象成分裂,我喜欢这样想,一个进程在每个叉子上分裂成两个。 然后是时候让他们俩执行程序中的第二个fork了。他们再次“分裂”,最终总共有 4 个进程。 那么第三个fork必须由所有4个进程执行,这将导致进一步分裂,导致总共8个进程,其中一个是父进程。 现在我们知道每个连续的分叉都会使进程数量加倍,您所要做的就是计算整个程序中发生的分叉数量。 (假设代码中没有条件分支,父进程和子进程必须执行代码的相同部分)

回答 2 投票 0

嵌套 for 循环在 C# 中如何工作

我不确定这段代码是如何编译的(使用Visual Studio代码仅供参考) 整数 i,j; 对于(i=0;i<=6; i++) { for (j=1; j<=7-i; j++) { Console.Write("*"); } Console.Writ...

回答 5 投票 0

使用两个因子变量存储嵌套 for 循环的结果

我想为两个因子变量的每个组合生成一些简单的计算,并将结果存储在数据框中。以下是数据: df <- data.frame(SPECIES = as.factor(c(rep(&q...

回答 1 投票 0

Python如何从嵌套循环返回嵌套字典? [重复]

我对 Python 和一般编程都很陌生,所以请耐心等待我和我的代码:) 我试图为我的一些机器收集一些基于轮班的日期,并遇到了正确构建的问题...

回答 1 投票 0

无需循环或库的图像处理(调整大小、旋转)

所以,我有一个正在开发的大学Python项目,我需要操作图像并应用滤镜,例如黑白、棕褐色等。一些滤镜选项是调整大小、旋转和

回答 1 投票 0

我的 Eclipse 中的 Java 程序正在终止

1 2 3 4 5 6 7 8 9 10 我正在尝试打印上面的输出。 下面是我在 Java/Eclipse IDE 中的程序。但我的程序被终止了。为什么我的程序没有显示任何输出?立刻就得到了

回答 1 投票 0

在 MATLAB 中填充函数句柄“数组”

我有以下函数处理大写 K 和小写 k 和 gamma 值的数组。 N = 3; k = 兰迪([1,1000],N+1,1,"双"); 伽玛 = 兰迪([1,100],N+1,1,"双"); K...

回答 1 投票 0

C语言模式带来意想不到的结果

我正在尝试用 C 创建一个程序来绘制这个图案: 1 1 2 1 3 1 1 2 2 2 3 2 1 3 2 3 3 3 1 4 2 4 3 4 1 5 2 5 3 5 我检查了解决方案的答案。 #包括 int 主函数 () {...

回答 1 投票 0

嵌套循环的并行处理在 R 中无法正常工作

我是R新手,我正在尝试使用parallel()和foreach()包运行嵌套循环来提高速度,但我没有成功。 我有一个数据框,其中第一列是类别...

回答 1 投票 0

VBA 嵌套 if-do-while 来求和值

我正在尝试做的事情: 循环浏览 2 个工作表(同一工作簿),比较 2 个标准(农场和批次)。如果条件匹配,则将“编号”中的值相加。样本”单元格并粘贴到 &...

回答 1 投票 0

Group ACF Wordpress 内的中继器

我正在使用 Wordpress 的高级自定义字段并尝试在组内循环转发器。我得到的只是“注意:数组到字符串的转换......” 出了什么问题以及如何修复它? 我正在使用 Wordpress 的高级自定义字段并尝试在组内循环转发器。我得到的只是“注意:数组到字符串的转换......” 出了什么问题以及如何解决? <?php if( have_rows('start_horlurar') ): while ( have_rows('start_horlurar') ) : the_row(); ?> <?php $horlur = get_sub_field('horlur'); ?> <?php if( have_rows( $horlur['arsmodeller_lankar']) ): while ( have_rows($horlur['arsmodeller_lankar']) ) : the_row(); ?> <?php echo get_sub_field('lank'); ?> <?php endwhile; endif; ?> <?php endwhile; endif; ?> 我相信这个答案是正确的,但对于那些寻求通用实现的人来说似乎还不够清楚。 <?php if( have_rows('your_group') ): while ( have_rows('your_group') ) : the_row(); if( have_rows('your_repeater') ): while ( have_rows('your_repeater') ) : the_row(); echo get_sub_field('repeater_sub_field'); endwhile; endif; endwhile; endif; ?> 通常,对于组,您可以通过使用以下方式到达特定子字段: <?php $group_var = get_field['your_group']; $group_sub_field_var = $group_var['group_sub_field'] ?> 但是,似乎对于嵌套在组内的中继器,您无法使用此策略,并且被迫首先使用 have_rows() 循环遍历组,甚至到达中继器。 如果您查看 ACF 上的 group 文档,它会提到如何像中继器一样循环访问组。此外 have_rows() 文档 还提供了有关使用 have_rows() 嵌套循环的更多详细信息。 我发现双环很乱而且不需要。 我意识到这已经很旧了,但我只是遇到了这个问题并且不想有两个循环。 对于我的组('group')和我的中继器('repeater'),带有子字段('subfield'),这就是我所做的。 $group = get_field('group'); $repeaters = $group['repeaters']; foreach($repeaters as $repeater) { echo $repeater["subfield"]; } 超级简单,而且干净多了。如果需要,您可以添加“if”语句,而不是控制我的必填字段。 我发现这种方法对于快速和肮脏来说很重要。我几乎对所有事情都使用组,以便能够为后端的自定义字段创建更好的用户体验。我的大多数自定义字段都是分组并获取参数,我希望它的代码尽可能少且尽可能干净。 如果你们发现此方法有任何问题,尤其是在性能方面,请告诉我。 在嵌套的 ACF 中继器中,您无需添加父中继器的引用 - 只需添加中继器名称即可。尝试这样。 <?php if( have_rows('start_horlurar') ): while ( have_rows('start_horlurar') ) : the_row(); echo get_sub_field('horlur'); if( have_rows('arsmodeller_lankar') ): while ( have_rows('arsmodeller_lankar') ) : the_row(); echo get_sub_field('lank'); endwhile; endif; endwhile; endif; ?> 更新代码: 您也需要像 ACF Repeater 一样循环 ACF Group 字段。尝试这样。 <?php if( have_rows('start_horlurar') ): while ( have_rows('start_horlurar') ) : the_row(); if( have_rows('horlur') ): while ( have_rows('horlur') ) : the_row(); if( have_rows('arsmodeller_lankar') ): while ( have_rows('arsmodeller_lankar') ) : the_row(); echo get_sub_field('lank'); endwhile; endif; endwhile; endif; endwhile; endif; ?> 我这样格式化,我觉得这样干净多了: <?php if(have_rows('features_repeater')): while(have_rows('features_repeater')): the_row(); if(have_rows('features_group')): while(have_rows('features_group')): the_row(); ?> <h1><?php echo get_sub_field('title'); ?></h1> <?php endwhile; endif; endwhile; endif; ?> 此代码可以与一组中的一个或两个中继器配合使用 <?php if (have_rows('your_group_name')): ?> <?php while (have_rows('your_group_name')): the_row(); if (have_rows('your_repeater_name')): ?> <ul> <?php while (have_rows('your_repeater_name')): the_row(); $your_repeater_item = get_sub_field('your_repeater_item'); ?> <li><?php echo $your_repeater_item; ?></li> <?php endwhile; ?> </ul> <?php endif; ?> <?php endwhile; ?> <?php endif; ?> 如果您在组字段中使用两个中继器,只需复制此代码两次并替换变量名称即可。我希望这段代码可以帮助别人。

回答 5 投票 0

Terraform 嵌套循环 for.each 示例

我正在尝试创建嵌套循环来迭代每个环境(dev、qa、uat),并为与每个环境关联的目标 IP 构建目标组附件。 这就是我所拥有的...

回答 1 投票 0

在带有标签break的三层嵌套for循环中,为什么当标签break位于内循环和中间循环时输出相同?

为什么当标记的break位于中循环和内循环开始之前时,输出完全相同? 示例代码 1 - 当断点位于内循环的开头时...

回答 1 投票 0

如何让嵌套的for循环更加高效?

我有以下代码,我想加快速度: foreach(ClosedWorkflows 中的 var 工作流程) { var w = relatedWorkflows.FirstOrDefault(r => r.Fingerprint !=workflow.Fingerprint &...

回答 1 投票 0

如何在 R 中编写 Walsh & Lawler 降雨季节性指数的计算代码

我正在努力循环需要计数器来计算降雨季节性的多个变量。由于计数器无法正常工作或顺序不正确,我最终收到了错误。我

回答 1 投票 0

Javascript:使用 foreach 循环嵌套获取..?

这是我的问题:我需要向我的服务器发出一些获取 POST 请求。服务器保存一个名称列表。每个名称对应于我需要浏览的元素列表,以便找到 sp...

回答 1 投票 0

获取具有多个子选项的选项列表

我已经尽了一切努力,但我似乎无法解决这个问题。我有一个微软团队自动助理,并且分配了多个菜单选项。我可以加载菜单选项...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.