【问题标题】:How to find the base case for a recursive function that changes a string of characters in a certain way如何找到以某种方式更改字符串的递归函数的基本情况
【发布时间】:2017-02-07 08:31:04
【问题描述】:

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

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

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

提前感谢大家帮助我弄清楚我的痛苦

【问题讨论】:

    标签: python recursion functional-programming discrete-mathematics


    【解决方案1】:

    好吧,您正在迭代一个字符列表,因此您的基本情况可以是一个空字符串。这是一个从字符串中删除元音的递归函数的快速示例:

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

    【讨论】:

    • 对不起,但正如我在问题中提到的,我有一个寻找元音问题的答案,实际上我有多个。我正在寻找一种针对非数学问题的基本案例的指导答案。不过感谢您的努力。非常感谢
    • 就像在这个例子中一样,空字符串或空列表通常会充当基本情况。另一种看待它的方法是尝试考虑如何将问题减少到较小的问题,然后处理问题已最大限度减少时出现的情况。或者您可以考虑可以解决的问题的“最简单”版本作为基本情况,例如空字符串或一个字符的字符串,然后从那里开始。
    猜你喜欢
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多