列表产品的递归功能不起作用 [英] Recursive function of the product of a list not working
本文介绍了列表产品的递归功能不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试创建一个将列表中的每个项目相乘并返回总数的函数.该功能直到内存用完才停止运行.有人可以向我解释为什么这行不通吗?
I'm trying to create a function that multiplies each item in a list and returns the total. The function doesn't stop running until memory runs out. Can someone please explain to me why this isn't working?
items = [1,2,3,4,10]
def mult2(items):
if not items:
return 0
return mult2(items[0]) * mult2(items[1:])
mult2(items)
推荐答案
这里有几个错误
- 您的基本情况是错误的.基本情况必须是列表减少为单个元素时,您需要返回1而不是0.
- 您需要发送包含单个元素的列表,而不是仅包含单个元素的列表才能满足您的基本情况.
更正的代码
Corrected code
def mult2(items):
if len(items)==1:
return items[0]
return mult2([items[0]]) * mult2(items[1:])
演示
>>> items = [1,2,3,4,10]
>>>
>>> def mult2(items):
... if len(items)==1:
... return items[0]
... return mult2([items[0]]) * mult2(items[1:])
...
>>> print(mult2(items))
240
这篇关于列表产品的递归功能不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文