问题描述
把abcd…s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
思路分析及代码实现
这道题可以用递归解决,每次递归将奇数位的元素删掉,然后把得到的新列表传入函数
def fib(x):
b = []
for i in range(len(x)):
if i % 2 != 0:
b.append(x[i])
x = b
if len(x) > 1:
return fib(x)
else:
return x[0]
a = 'abcdefghijklmnopqrs'
a = list(a*106)
print(fib(a))
最后答案是 q