title: construct an array of integers to achieve specific sequence
body: <blockquote>
    <p>construct the shortest possible sequence of integers ending with A,
    using the following rules:</p>
    
    <p>the first element of the sequence is 1, each of the successive
    elements is the sum of any two preceding elements (adding a single
    element to itself is also permissible), each element is larger than
    all the preceding elements; that is, the sequence is increasing.</p>
    
    <p>For example, for A = 42, a possible solutions is [1, 2, 3, 6, 12, 24,
    30, 42]. Another possible solution is [1, 2, 4, 5, 8, 16, 21, 42].</p>
  </blockquote>
  
  <p>I have written the following but it fails on input of 456, by returning[1,2,4,8,16,32,64,128,200,256,456] , there are no numbers in the sequence that can be added together to get 200.</p>
  
  <p>how can I fix the below code? what am I doing wrong?</p>
  
  <pre><code>  public static int[] hit(int n)
      {
          List&lt;int&gt; nums = new List&lt;int&gt;();
  
          int x = 1;
  
          while (x &lt; n)
          {
              nums.Add(x);
              x = x * 2;
  
              if (x &gt; n)
              {
  
                      nums.Add(n - (x / 2));
  
                  nums.Add(n);
              }
          }
  
          nums.Sort();
          int[] arr =  nums.ToArray();
          return arr;
      }
  </code></pre>