递归递增计数

时间:2017-11-21 17:16:41

标签: python recursion

您好我正在尝试学习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”的问题 我知道这是一个非常愚蠢的问题,但我找不到解决方案。 请帮帮我

2 个答案:

答案 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