我无法弄清楚这个序列 - 11110000111000110010

I can't figure out this sequence - 11110000111000110010

注意:这是作业,但我有问题的部分可以寻求帮助。

我必须编写一个序列 11110000111000110010(我正在使用 python)而不使用开关或 if 语句,并且最多只有 5 个 for 和 while。

我已经设计好了要迭代的脚本,我只是无法弄清楚该算法是递归的还是显式的,更不用说元素是 1、2 还是 4 =/

就目前我们所学的内容而言,没有方程式或算法可用于计算序列的算法。只是一组说明,用于在我们弄清楚后定义一个。有人看到我遗漏的模式吗?

编辑:我正在寻找的是确定序列的算法。 IE 序列 1,3,6,10,15 将是 a[n]=(a[n-1]+n),其中 n 是序列的索引。这将是一个递归序列,因为它依赖于前一个元素的值或索引。在这种情况下,a[n-1] 指的是前一个索引的值。 另一个序列是 2, 4, 6, 8 会变成 a[n] = (n*2) 这是一个显式序列,因为您只需要当前索引或值。

编辑:感谢所有乐于助人的人的回答....我不敢相信我没有看到它=/

注意这里有一个嵌套结构。在伪代码中(所以你自己做python):

for i in 4 .. 1:
    for b in 1 .. 0:
         for j in 1 .. i:
            print b
b_len = 4
ones = '1111'
zeros = '0000'
s = ''
for n in range(b_len, -1, -1):
    s = s + ones[:n] + zeros[:n]
print s 

打印:

11110000111000110010

我明白了。四个“1”-四个“0”,三个“1”-三个“0”,两个“1”-两个“0”,一个“1”-一个“0”。一共20位。不知道是什么意思

#!/usr/bin/python

s=''

i=4
while i >0:
    s=s+'1'*i+'0'*i
    i -=1

print s

11110000111000110010

这个问题有很多可能的解决方案。这是一个可重复使用的解决方案,它简单地从 4 递减到 1 并添加预期数量的 1 和 0。

使用的循环数:1

def sequence(n):
    string = ""
    for i in range(n):
        string+='1'*(n-i)
        string+='0'*(n-i)
    return string

print sequence(4)

还有另一种优雅且更 pythonic 的单行方式:

print ''.join(['1'*x+'0'*x for x in range(4,0,-1)]) 

使用的循环:1,代码行:1

;)

正是这个序列还是你想改变 1 的第一个序列的长度?

您可以像以下代码一样使用反向迭代循环:

def askedseq(max1):
   seq = [] # declaring temporary sequence
   for i in range(max1,0,-1): # decreasing iteration loop
      seq += i*[1] + i*[0] # adding the correctly sized subseq
   return seq

print askedseq(4) #prints the required sequence
print askedseq(5) #prints the equivalent sequence with 11111

打印: 11110000111000110010

111110000011110000111000110010

你也可以看看numpy做这样的事情

你可以试试这个:

print ''.join(['1'*i+'0'*i for i in range(4,0,-1)])