您好,我正在尝试学习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)
我想获得6和7和7和7之间的2我知道这确实是愚蠢的问题,但是我找不到解决方案。请帮助我
是的,您是对的,问题是由于每个function
创建自己的counts
variable
设置为0
。您想要的是在functions
之间传递此值。为此,我们可以使用global
(坏主意)或将其作为另一个parameter
传递。如果我们在function
定义中使用counts=0
的syntax
,则在从根节点调用它时,我们无需指定以从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
python不包含像c和其他语言一样的 函数,您将必须使用替代方案。
counts += 1 #Will add one every time
或
counts += counts #Adds value of counts to itself