解决这个序列的逻辑是什么?

Vai*_*hav 11 algorithm logic

序列就像这样.. 7,8,77,78,87,88,777,778,787,788依此类推......

找到第n个序列的逻辑是什么?我尝试将它除以2然后除以4,因此它似乎不起作用.

Pet*_*ham 22

二进制,从两个计数,忽略前导数字,使用7和8表示零和一:

        7,  8,  77,  78,  87,  88,  777,  778,  787,  788
 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011 
Run Code Online (Sandbox Code Playgroud)


rec*_*ive 15

观察:

  1. 序列似乎是仅包含数字7和8的数字的升序列表.

  2. 位数是非递减的,对于每个n位部分,2 ** n序列中有数字.

  3. n位数的前半部分以7开头,后半部分以8开始.

  4. 对于n位数字的每一半,第一个数字后的剩余数字与n-1个数字相同.

这些事实可用于构建合理有效的递归实现.

这是一个C#实现:

void Main() {
    for (int i = 0; i < 10; i++)
        Console.WriteLine (GetSequence(i));
}

string GetSequence(int idx) {
    if (idx == 0) return "7";
    if (idx == 1) return "8";

    return GetSequence(idx / 2 - 1) + GetSequence(idx % 2);
}
Run Code Online (Sandbox Code Playgroud)

输出:

7
8
77
78
87
88
777
778
787
788
Run Code Online (Sandbox Code Playgroud)

  • 看来你对递归很着迷.. :) (2认同)