skonstruuj tablicę liczb całkowitych, aby uzyskać określoną sekwencję

skonstruuj najkrótszą możliwą sekwencję liczb całkowitych kończącą się literą A, stosując następujące reguły:

pierwszym elementem sekwencji jest 1, każdy z kolejnych elementów jest sumą dwóch poprzednich elementów (dodanie pojedynczego elementu do siebie jest również dopuszczalne), każdy element jest większy niż wszystkie poprzednie elementy; to znaczy sekwencja wzrasta.

Na przykład dla A = 42 możliwe rozwiązania to [1, 2, 3, 6, 12, 24, 30, 42]. Innym możliwym rozwiązaniem jest [1, 2, 4, 5, 8, 16, 21, 42].

Napisałem następujące, ale nie powiedzie się na wejściu 456, zwracając [1,2,4,8,16,32,64,128,200,256,456], nie ma żadnych numerów w sekwencji, które można by dodać do 200.

jak mogę naprawić poniższy kod? Co ja robię źle?

  public static int[] hit(int n)
    {
        List<int> nums = new List<int>();

        int x = 1;

        while (x < n)
        {
            nums.Add(x);
            x = x * 2;

            if (x > n)
            {

                    nums.Add(n - (x / 2));

                nums.Add(n);
            }
        }

        nums.Sort();
        int[] arr =  nums.ToArray();
        return arr;
    }

questionAnswers(5)

yourAnswerToTheQuestion