递归增加计数



您好,我正在尝试学习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=0syntax,则在从根节点调用它时,我们无需指定以从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

最新更新