注意:这是用于家庭作业,但我有问题的部分可以请求帮助。
我必须编写序列11110000111000110010(我正在使用python)而不使用switch或if语句,并且最多只能使用5和fors。
我已经将我的脚本布局为迭代,我只是无法弄清楚算法是递归的还是显式的,更不用说元素是1的2还是4的= /
到目前为止,我们已经学到了很多方程式或算法来计算出序列算法。一旦我们弄明白,就只需要一组定义一个的指令。有没有人在这里看到我失踪的模式?
编辑:我正在寻找的是确定序列的算法。 IE序列1,3,6,10,15将成为[n] =(a [n-1] + n),其中n是序列的索引。这将是一个递归序列,因为它依赖于前一个元素的值或索引。在这种情况下,[n-1]指的是先前索引的值。 另一个序列是2,4,6,8会出现一个[n] =(n * 2),这是一个显式序列,因为你只需要当前的索引或值。
编辑:感谢所有回复的乐于助人的人......我无法相信我没有看到它= /答案 0 :(得分:3)
请注意这里是否有嵌套结构。在伪代码(所以你自己做python):
for i in 4 .. 1:
for b in 1 .. 0:
for j in 1 .. i:
print b
答案 1 :(得分:3)
这个问题有很多可能的解决方案。这是一个可重复使用的解决方案,只需从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)
还有另一种单线优雅和更加抒情的方式:
print ''.join(['1'*x+'0'*x for x in range(4,0,-1)])
使用的循环:1,代码行:1
)
答案 2 :(得分:2)
你可以试试这个:
print ''.join(['1'*i+'0'*i for i in range(4,0,-1)])
答案 3 :(得分:0)
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
答案 4 :(得分:0)
我明白了。四个“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
答案 5 :(得分:0)
这正是这个序列还是你想要能够改变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做这些事情