C++半数集问题

给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下: (1)n∈set(n); (2)在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3)按此规则进行处理,直到不能再添加自然数为止。