计算前身和后继者

时间:2016-12-30 21:36:48

标签: algorithm conditional

我遇到一个有趣的问题,我想讨论它,以便了解不同的人如何接触它:

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

1 个答案:

答案 0 :(得分: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