Python def Recursive\u函数中列表中的整数之和(一个参数)

2024-04-19 10:39:34 发布

您现在位置:Python中文网/ 问答频道 /正文

列表中元素(表示整数)的和。 例如A = ["xx", "3e", "5", "44"]

我的函数返回49。因此,递归的也应该这样做。你知道吗

我成功地实现了迭代版本。你知道吗

def add_iter(my_list):
    t = 0
    for x in my_list:
        if x.isdigit() == True:
            t+= int(x)
    print(t)

我想把它转换成递归函数。你知道吗


Tags: 函数in版本add元素列表forif
3条回答

递归版本的功能类似,在递归到列表的其余部分之前,只对每个元素进行迭代。基本情况是列表只剩下一个元素。我建议创建一个helper类来确保值是有效的numbers

# Helper function to clean up int value
def zero_or_value(value):
  try:
    return int(value)
  except ValueError as err:
    # Handler err here if you want
    pass
  return 0


def recursive_add_iter(my_list):
  if not my_list: # Return 0 if list is empty
    return 0
  elif len(my_list) == 1: # Base case, try converting last element
    return zero_or_value(my_list[0])

  return zero_or_value(my_list[0]) + recursive_add_iter(my_list[1:])


A = ["xx", "3e", "5", "44"]

print(recursive_add_iter(A))

因为这是一个练习,我不是在写答案,而是给出一些提示

  • 空列表的和为零
  • 非空列表的和是(第一个元素)+(列表其余元素的和)
  • 如果第一个元素不是数字,那么它可能会被忽略

试试这个:

def add_recursive(my_list):
    if my_list:
        x = my_list[0]
        if x.isdigit():
            return int(x) + add_recursive(my_list[1:])
        else:
            return add_recursive(my_list[1:])
    else:
        return 0


A = ["xx", "3e", "5", "44"]
add_recursive(A)
# 49

相关问题 更多 >