从伪代码实现循环

时间:2010-02-23 02:04:39

标签: algorithm loops implementation

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

  

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行使用了什么样的循环,以及我为循环提供了什么条件?

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

for (;;) {
    // ...

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

    // ...
}

afterLoop:
// ...
但是,{p> goto不赞成。最好用goto Step 32语句替换break,该语句会立即退出循环:

for (;;) {
    // ...

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

    // ...
}

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

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

如果第18-20行是循环中的最后一行,那将会有效。因为它们不是,所以看起来选项#2是合适的。

答案 1 :(得分:1)

如果您打算详细编写伪代码,您也可以使用目标语言编写代码。伪代码应该是一个更广泛的画笔 - 像这样(与你的代码无关):

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