序列就像这样.. 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
观察:
序列似乎是仅包含数字7和8的数字的升序列表.
位数是非递减的,对于每个n位部分,2 ** n序列中有数字.
n位数的前半部分以7开头,后半部分以8开始.
对于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)
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |