【发布时间】:2021-10-05 11:32:11
【问题描述】:
所以我是递归新手,我正在尝试制作一个程序,您可以在其中输入一个列表,python 测试每个整数(例如 9)并查看它后面的整数是否加倍。因此,如果我输入 2 4 8 16 32 的列表,将返回 4,而 -5 -10 0 6 12 9 36 将返回 2,因为 -5 后跟 -10 是一,而 6 后跟 12 是第二个。这是我到目前为止的代码。我觉得我很接近。但只有几件事挡住了我的路。任何帮助都会很棒!
L = []
def countDouble(L):
x = input(f'Enter a list of numbers separated by a space: ')
y = (x.split(' '))
print(y[1])
print(y[0])
count = 0
y[0] += y[0]
# unsure of how to multiple y[0] by 2
if y[0]*2 == y[1]:
count += 1
else:
count += 0
#how would I traverse through the rest of the entered list using recursion?
print(count)
countDouble(L)
【问题讨论】:
-
这看起来像一个一维列表。这里没有必要/方式使用递归
-
递归在 Python 中的使用深度既低效又有限。虽然可以将它与列表一起用于教育目的,但您永远不应该在“真实”代码中使用它:改用迭代。 Python 不是 Scheme 或 Haskell,
list类型也不是链表:它是一个可动态调整大小的数组。 -
为什么第一个例子返回
4? -
另外,你的函数
countDouble不是你想要递归的函数,因为它创建你想要迭代/递归的列表。 -
你的递归函数应该有一个列表和索引。它测试该索引和
index+1处的元素。当索引是列表的末尾时它会停止——这是基本情况。