【发布时间】:2017-02-03 20:53:56
【问题描述】:
我应该编写一个递归函数,它接受一个字符串列表或一个字符串列表列表,如果找到,则返回不带元音的列表。这是我解决它的尝试:
def noVow(seq):
keys = ['a','i','e','o','u','u']
if not seq or not isinstance(seq, list) :
return
else:
if seq[0] in keys:
del seq[0]
return (noVow(seq[0:]))
else:
return (noVow(seq[1:]))
li = ["b", "c", "d","a"]
print (noVow(li))
我知道错误存在于我的基本情况中,但是我无法提出正确的基本情况。
请注意,递归函数必须用纯函数式编程编写,即不允许有副作用。
【问题讨论】:
-
不相关,但为什么你的字母 u 出现了两次?
-
@Hoopdady 你说得对,非常不相关!
-
del seq[0]不会被视为一种副作用,它否定了避免可变数据的纯函数式编程?只是想了解您的需求是否相互交叉。 -
@cdlane 实际上我不确定,我更像是一个命令式编程程序员,而且我对整个函数式编程概念都是新手。所以是的,你可能是对的。因为它会产生副作用,所以它不应该存在。
标签: python recursion functional-programming