最近我一直在研究递归,因为根据我的教授的说法,它代表了纯函数式编程方法,既不会改变变量,也不会产生副作用。通过我之前的两个问题,这里和这里,我已经意识到,它不是递归定义每说是我的问题,我理解递归定义是如何工作的,我已经尝试解决许多数学相关的问题,使用递归定义,并设法解决他们在第一次尝试。因为在数学中你总是有一个非常清晰的基本情况,比如0!
= 1等等。然而,当涉及到使用string
时,似乎总是这样,我不知道如何以以下形式构成我的基本情况:
if (something):
return something
else:
invoke the recursive function
例如,给出string
或char
的list
,使用递归定义来删除元音或字母数字char
等。正如前面提到的,它是函数式编程,所以没有副作用,不允许改变变量。这就提出了一个问题,这些问题不是数学问题怎么能得出基本情况呢?
提前感谢大家帮我弄清楚我的痛苦
好吧,你是在一个字符列表上迭代,所以你的基本情况可以是一个空字符串。下面是一个递归函数的快速示例,它从字符串中删除元音:
def strip_vowels(str):
if not str:
return ''
if str[0] in ['a', 'e', 'i', 'o', 'u']:
return strip_vowels(str[1:])
else:
return str[0] + strip_vowels(str[1:])