计算的前身和后继者
Computing Predecessor and Successor
我遇到了一个有趣的问题,我想讨论一下,看看不同的人会如何处理它:
设n
为自然数,任务是实现一个函数f
使得
f(n) = n + 1 if 2 divides n
f(n) = n - 1 if 2 does not divide n
条件:实现不得使用条件构造
我的答案是f(n) = n xor 1
你可以这样做:
f(n) = n + 1 - 2 * (n % 2)
因为
(n % 2) == 0
如果 2 除 n
则 f(n) = n + 1 - 0
和
(n % 2) == 1
如果 2 不整除 n
因此 f(n) = n + 1 - 2 = n - 1
我遇到了一个有趣的问题,我想讨论一下,看看不同的人会如何处理它:
设n
为自然数,任务是实现一个函数f
使得
f(n) = n + 1 if 2 divides n
f(n) = n - 1 if 2 does not divide n
条件:实现不得使用条件构造
我的答案是f(n) = n xor 1
你可以这样做:
f(n) = n + 1 - 2 * (n % 2)
因为
(n % 2) == 0
如果 2 除 n
则 f(n) = n + 1 - 0
和
(n % 2) == 1
如果 2 不整除 n
因此 f(n) = n + 1 - 2 = n - 1