【问题标题】:Implementing Loops from Pseudocode从伪代码实现循环
【发布时间】:2010-02-23 02:04:39
【问题描述】:

我想知道是否有人可以建议我如何在以下伪代码中实现这个循环:

8:循环
9:而 f[0] = 0 做
10:对于 i = 1 到 N 做
11: f[i ¡ 1] = f[i]
12: c[N + 1 - i] = c[N - i]
13:结束
14: f[N] = 0
15: c[0] = 0
16: k = k + 1
17:结束时
18: 如果 deg(f) = 0 那么
19:转到第 32 步
20:如果结束
......... ...... ....
31:结束循环

我的问题是我应该如何实现从第 8 行开始到第 31 行结束的循环;我对第 8 行到第 31 行之间的语句感到满意,但我在第 8 行使用了什么样的循环,我为循环给出了什么条件?

提前致谢。

【问题讨论】:

  • 什么语言?对我来说,这看起来像是一个无限循环,你可以使用任何你想要的循环结构。只要确保你有办法完成第 19 步。
  • 我正在使用 Java,@jldupont,这是为了我的大学项目,所以在某种程度上是的家庭作业 :-)
  • @Neville:那我建议你下次添加相关的homework标签吗?
  • @Neville:没有问题!玩得开心。

标签: algorithm loops implementation


【解决方案1】:

这是一个无限循环。没有条件,永远循环。唯一的出路是进入第 19 步。在类 C 语言中,您可以将其写为 while (true)for (;;)

for (;;) {
    // ...

    if (deg(f) == 0) {
        goto afterLoop;
    }

    // ...
}

afterLoop:
// ...

goto 不受欢迎。最好将goto Step 32 替换为break 语句,它会立即退出循环:

for (;;) {
    // ...

    if (deg(f) == 0) {
        break;
    }

    // ...
}

对于它的价值,如果您没有步骤 21-30,您可以使用 do/while 循环,其中循环条件位于循环底部而不是顶部:

do {
    // ...
}
while (deg(f) != 0);

如果第 18-20 行是循环中的最后几行,这将起作用。由于它们不是,看起来选项 #2 是要使用的选项。

【讨论】:

  • 非常感谢,我不知道这是一个无限循环,我知道我必须摆脱它,我想我会用无限循环来实现它。再次感谢。
【解决方案2】:

如果你要写这么详细的伪代码,你还不如用目标语言来写。伪代码应该是一个更广泛的刷子 - 像这样(与您的代码无关):

for each bank account
   check balance as of last month
   if balance greater than promotion limit
      send out valued customer pack
   endif
endfor

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2021-11-27
    相关资源
    最近更新 更多