求算法, 1,2,4,8,16…………,给出任意数如 15,如何计算出 15 是由 1, 2, 4, 8 相加得到的?即 15=1&2&4&8,而 13=1&4&8

2015-06-06 08:16:13 +08:00
 bufannao
3575 次点击
所在节点    问与答
21 条回复
msg7086
2015-06-07 10:00:25 +08:00
或者写成one line的话

bin = -> (n) {Enumerator.new{|e| while n > 0 do m, n = n, n & (n-1); e.yield m - n end}.to_a}

p bin.call 15 #-> [1, 2, 4, 8]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/196468

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX