这是一个简单的程序,用于计算列表中元素大于或等于x且小于等于y的列表中的元素数。

def NumRange(a,x,y):
    count = 0
    for num in a:
        if(num>=x and num<=y):
            count+=1
    return count

NumRange([1,3,5,7,9,11],3,9)
# => 4


如何重写此方法以递归?我知道我可能需要在此方法中再添加一个参数,但是我不知道该怎么做。

最佳答案

这是递归的最佳选择,在Python 2中,您可以像这样

def NumRange(a, x, y):
    hd, tl = a[0], a[1:]
    if tl == []:
        return 1 if hd >= x and hd <= y else 0
    else:
        return (1 if hd >= x and hd <= y else 0) + NumRange(tl, x, y)


这也是尾递归。

关于python - 如何将该方法重写为递归?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40960767/

10-12 22:01