这是一个简单的程序,用于计算列表中元素大于或等于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/