如何找到以某种方式更改字符串的递归函数的基本案例

时间:2016-09-29 06:39:05

标签: python recursion functional-programming discrete-mathematics

最近我一直在处理递归,据我的教授说,它代表了纯函数式编程方法,因为变量和副作用都没有发生变化。 通过我之前的两个问题HEREHERE我已经意识到,不是每个说法的递归定义是我的问题,我理解递归定义是如何工作的,我尝试使用解决许多数学相关问题递归定义并设法在第一次尝试时解决它们。因为在数学中你总是有一个清晰的基本情况,例如0!是1等。但是当谈到使用string时,似乎总是如此,我不知道如何构成我的基础案例形式:

if (something):
     return something
 else:
      invoke the recursive function

例如给list string,或char使用递归定义来删除元音或字母数字char等。如前所述,它的函数式编程所以没有副作用不允许变量变化。这引出了一个问题,这样的问题不是数学问题,如何才能提出基本情况?

先谢谢大家帮我弄清楚我的痛苦

1 个答案:

答案 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:])