如何执行递归函数,告诉我元素在列表中存在多少时间。举个例子,我可以说我有以下列表['a','b','c','b','b','d']。如何执行带有2个参数的递归函数。一个是列表,另一个是元素。该函数必须返回元素在列表中出现的次数。
我尝试了以下操作,但每次返回函数时,位置都会重新启动:
def number_of_repetitions(liste, element):
position = 0
number_of_rep = 0
if position == len(liste)-1:
return number_of_rep
if liste[position] == element:
position +=1
return number_of_rep + number_of_repetitions(liste[position], element)
else:
position +=1
return number_of_rep + number_of_repetitions(liste[position], element)
print(number_of_repetitions(['a','b','c','b'],'b'))
答案 0 :(得分:2)
def recursiveCount(lst,key):
if lst == []: #base case
return 0
if lst[0] == key:
return 1 + recursiveCount(lst[1:],key)
else:
return 0 + recursiveCount(lst[1:],key)
print recursiveCount(['a','b','a'],'a') #prints 2
基本案例:空列表,列表中没有键
第一种情况:第一个元素匹配键,计数它(1)和递归调用除了最少的元素
第二种情况:第一个元素不匹配,不计算它(0)和递归调用除了第一个元素
答案 1 :(得分:1)
def element_count(input_list, ele, count=0):
if ele in input_list:
count = count + 1
input_list.remove(ele)
return element_count(input_list, ele, count)
else:
return count
input_list = ['a','b','c','b','b','d']
print "Count of 'b' in input list is :", element_count(input_list, 'b')
print "Count of 'a' in input list is :", element_count(input_list, 'a')
将计数result
设为:
Count of 'b' in input list is : 3
Count of 'a' in input list is : 1
答案 2 :(得分:0)
你不需要递归。
print ['a','b','c','b','b','d'].count('b') #prints 3
答案 3 :(得分:0)
利用True == 1
和False == 0
:
def count(x, t):
if not x:
return 0
else:
return (x[0] == t) + count(x[1:], t)
虽然我可能真的更喜欢这个选定的答案,因为它更明确。