最近我一直在处理递归,据我的教授说,它代表了纯函数式编程方法,因为变量和副作用都没有发生变化。
通过我之前的两个问题HERE和HERE我已经意识到,不是每个说法的递归定义是我的问题,我理解递归定义是如何工作的,我尝试使用解决许多数学相关问题递归定义并设法在第一次尝试时解决它们。因为在数学中你总是有一个清晰的基本情况,例如0!
是1等。但是当谈到使用string
时,似乎总是如此,我不知道如何构成我的基础案例形式:
if (something):
return something
else:
invoke the recursive function
例如给list
string
,或char
使用递归定义来删除元音或字母数字char
等。如前所述,它的函数式编程所以没有副作用不允许变量变化。这引出了一个问题,这样的问题不是数学问题,如何才能提出基本情况?
先谢谢大家帮我弄清楚我的痛苦
答案 0 :(得分:3)
嗯,你正在迭代一个字符列表,所以你的基本情况可以是一个空字符串。这是一个从字符串中删除元音的递归函数的快速示例:
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:])