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

帮助理解伪代码

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

    有人能告诉我如何实现下面这行伪代码吗?

    c[k]=c[k] (mod M) with |c[k]|<=M/2
    

    我不明白“with”是什么意思,它是否意味着我必须确保在约简模m之后,c[k]必须小于或等于m/2。“with”在伪代码中通常意味着什么(如果有的话)?

    请注意,M是int型的。我在Java中实现它,如果它有帮助的话。

    事先谢谢。

    4 回复  |  直到 15 年前
        1
  •  4
  •   Simon Nickerson    15 年前

    我认为这意味着设置 c[k] = c[k] + x*M 在哪里 -M/2 <= c[k] + x*M <= M/2 (选择正整数或负整数 x 所以这是真的)。

    例如,如果m=5,我们将得到:

           Previous value         New value
              of c[k]              of c[k]
                8                    -2
                9                    -1
               10                     0
               11                     1
               12                     2
               13                    -2
    
        2
  •  0
  •   in70x    15 年前

    嗯。草率的伪代码,呵呵。但我认为他说的是c[k]的绝对值,也会小于或等于m除以2的模值。不过,这或多或少只是一个猜测。我从未遇到过使用这个术语(with)的伪代码。也许他只是想让人们知道,由于模运算的缘故,C[K]总是被保险在界内。

        3
  •  0
  •   JasCav    15 年前

    这一定是伪代码吗?通常,伪代码只是描述代码将要做什么,但使用更自然的语言(例如更像英语)。在这种情况下,我甚至不确定描述的是什么。此外,我认为“with”不一定有专门的含义,尤其是在看不到其余内容的上下文的情况下。如果您提供更多信息,可能会有所帮助。

        4
  •  -1
  •   David Souther    15 年前

    C[K]=C[K](M型),带C[K]<=M/2

    if(Math.abs(c[k]) <= M/2){
      c[k] %= M;
    }
    

    “with”来自数学,意思是“如果条件是真的,那么就这样做”

    你已经标记了这个“Java”,所以我使用了Java数学库。