程序员升职记之40倍扩大器

题目:

把INBOX(输入栏)的每一个数都乘以40,然后把结果放进OUTBOX(输出栏)中。

分析:

一般的程序员首先应该想到的是40=32+8,即设原数X,40 * X = 32 * X + 8 * X。但是我们计算到32 * X时(同时也记录下了8 * X),会多计算2 * X 及 16 * X。我曾经也试过利用40 * X = 2 *(16 * X + 4 * X),但是此时也多计算了2 * X 和 8* X。这两种计算方法在游戏中所占的行数相同,计算次数也相同(15行代码,64步运算)。始终无法达到最优。

正确的算法应该是40 * X =(2 * X + 8 * X)* 2 * 2。这样我们之多计算了4 * X。代码优化到了14行,56步计算。

代码:

程序员升职记之40倍扩大器_第1张图片

 

你可能感兴趣的:(Others)