我正在尝试编写一个Python函数,它接受两个参数n和num,并计算0到num之间'n'的出现次数。例如,
我为这个问题设计了一个简单的迭代解决方案:
countOccurrences(15,5)
应该是 2
。
countOccurrences(100,5)
应该是 20
。我为这个问题设计了一个简单的迭代解决方案:
def countOccurrences(num,n):
count=0
for x in range(0,num+1):
count += countHelper(str(x),n)
return count
def countHelper(number,n):
count=0
for digit in number:
if digit==n:
count += 1
return count
如果我尝试调用countOccurrences(100000000000,5)
,这会遇到明显的问题。
我的问题是如何使这个过程更加高效?我希望能够"相对"快速地处理问题,并避免内存错误。下面是我第一次尝试递归解决此问题:
def countOccurence(num, n):
if num[0]==n:
return 1
else:
if len(num) > 1:
return countOccurence(num[1:],n) + countOccurence(str((int(num)-1)),n)
else:
return 0
xrange
。递归只会导致您达到系统递归限制。 - jonrsharpe