代码之家  ›  专栏  ›  技术社区  ›  Mohammad Sepahvand

从伪代码实现循环

  •  0
  • Mohammad Sepahvand  · 技术社区  · 15 年前

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

    8:回路
    9:而f[0]=0 do
    10:对于i=1到n do
    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 回复  |  直到 15 年前
        1
  •  2
  •   John Kugelman Michael Hodel    15 年前

    这是一个无限循环。没有条件,永远循环。唯一的出路就是到达第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
  •  1
  •   anon    15 年前

    如果你打算写这么详细的伪代码,你也可以用目标语言来写。伪代码应该是一个更广泛的刷子-类似于这样(与代码无关):

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