如何找到以某种方式更改字符串的递归函数的基本情况
How to find the base case for a recursive function that changes a string of characters in a certain way
最近我一直在使用递归,因为据我的教授说,它代表了纯函数式编程方法,因为既不会发生变量变化也不会发生副作用。
通过我之前的两个问题 and 我已经意识到我的问题不是递归定义,我理解递归定义是如何工作的并且我尝试使用递归定义解决许多与数学相关的问题并设法第一次尝试解决它们。因为在数学中你总是有一个 crystal 明确的基本情况,例如 0!
是 1 等。但是当涉及到 string
时,似乎总是我不知道的情况如何以 :
的形式构成我的基本案例
if (something):
return something
else:
invoke the recursive function
例如给出 string
的 list
,或 char
使用递归定义删除元音或字母数字 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:])
最近我一直在使用递归,因为据我的教授说,它代表了纯函数式编程方法,因为既不会发生变量变化也不会发生副作用。
通过我之前的两个问题 0!
是 1 等。但是当涉及到 string
时,似乎总是我不知道的情况如何以 :
if (something):
return something
else:
invoke the recursive function
例如给出 string
的 list
,或 char
使用递归定义删除元音或字母数字 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:])