4

我将如何制作一个函数,以便x具有从x=0to的值范围,x=19如果该x值超过 19 或低于零,我怎样才能让它环绕

从: x=20, x=21, x=22x=(-1), x=(-2), x=(-3)

To: x=0, x=1, x=2x=19, x=18, x=17 分别?

我听说过模算术,这显然是我应该处理的方式。

4

3 回答 3

7

通常你会使用内置函数modrem,但我认为它们是家庭作业的禁区。所以你可以编写自己的函数,例如

mod20 x | x < 0 = ...
        | x > 19 = ...
        | otherwise = x

您可以尝试在...s 中填写不同的内容。最简单的方法之一是重复加法或减法,但我不想破坏所有的乐趣。

拥有此功能后,您可以在每次“正常”算术运算后“重新调整”值,例如mod20 (12 + 17).

于 2011-05-20T13:11:59.483 回答
3

尝试使用 mod 功能:

(-5) `mod` 20 ==> 15
5 `mod` 20 ==> 5
20 `mod` 20 ==> 0
25 `mod` 20 ==> 5

另请参阅有关该主题的维基百科。

于 2011-05-20T13:08:58.720 回答
1

采用

x `mod` 20

(这是使答案变成 30 个字符的填充物。)

于 2011-05-20T13:09:19.843 回答