如何找到以某种方式改变字符串的递归函数的基本情况



最近我一直在研究递归,因为根据我的教授的说法,它代表了纯函数式编程方法,既不会改变变量,也不会产生副作用。通过我之前的两个问题,这里和这里,我已经意识到,它不是递归定义每说是我的问题,我理解递归定义是如何工作的,我已经尝试解决许多数学相关的问题,使用递归定义,并设法解决他们在第一次尝试。因为在数学中你总是有一个非常清晰的基本情况,比如0! = 1等等。然而,当涉及到使用string时,似乎总是这样,我不知道如何以以下形式构成我的基本情况:

if (something):
     return something
 else:
      invoke the recursive function
例如,

给出stringcharlist,使用递归定义来删除元音或字母数字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:])

最新更新