您好我正在尝试学习Python上的基本递归函数,我正在做一些练习练习。我试图创建一个函数,使用递归返回数字之间的增量小于k的数字,但我找到了正确的方法,但增加计数是问题,这是我的代码到目前为止...
testList = [(1), (6), (7), (9), (14)]
def count_test(loc_list, k):
counts = 0
if len(loc_list) == 1:
return print(counts)
else:
if loc_list[1] - loc_list[0] < k:
counts += 1
del loc_list[0]
count_test(loc_list,k)
else:
del loc_list[0]
count_test(loc_list, k)
count_test(testList, 3)
我想获得2到6和7之间,以及7和9但计数没有递增我认为这是我把“计数= 0”的问题 我知道这是一个非常愚蠢的问题,但我找不到解决方案。 请帮帮我
答案 0 :(得分:0)
是的,您是对的,问题是由于每个function
创建了自己的counts
variable
设置为0
。你想要的是在functions
之间传递这个值。要做到这一点,我们可以使用global
(糟糕的主意)或者将其作为另一个parameter
传递。如果我们在syntax
定义中使用counts=0
function
,那么当从根节点调用它时,我们不需要指定以0
开头counts
。
哦,而Python
不支持其他语言中显示的++
syntax
,而是必须使用counts += 1
。
def count_test(loc_list, k, counts=0):
if len(loc_list) == 1:
return print(counts)
else:
if loc_list[1] - loc_list[0] < k:
counts += 1
del loc_list[0]
count_test(loc_list,k,counts)
else:
del loc_list[0]
count_test(loc_list, k,counts)
并通过调用测试:
count_test(testList, 3)
给出:
2
答案 1 :(得分:0)
Python不包含像c和其他语言那样的++函数,你必须使用替代方法。
counts += 1 #Will add one every time
或
counts += counts #Adds value of counts to itself