我需要编写此迭代函数来执行相同的操作,但它必须是递归的。
def task1(string: str):
for i in range(len(string)):
if string[i] != string[len(string) - i - 1]:
return False
return True
这是我尝试过的方法,但是不起作用。
def task1_recursion(string: str):
print(string)
if len(string) > 1:
if string[0] == task1_recursion(string[1::1]):
return True
else:
return False
else:
return string
我的代码似乎是最后一个递归返回字符串“”之一,这使其返回False。
答案 0 :(得分:0)
只需检查尖端和尾部,然后继续使用没有它们的弦:
def task1_recursion(string: str):
# recursion base condition (exit condition)
if len(string) <= 1:
return True
# unpack values
first, *_, last = string
# check if they are different
if first != last:
return False
# if not continue checking the remaining string
return task1_recursion(string[1:-1])
答案 1 :(得分:0)
如果我正确理解,您想检查一个字符串是否与task1
中的代码对称。我的解决方案如下:
def fct(s: str, i: int):
if len(s) <= 1 or i == len(s):
return True
return s[i] == s[len(s) - 1 - i] and fct(s, i + 1)
我测试过,fct
产生的结果与task1
相同。但是它需要索引的附加参数。但是,如果希望参数仅包含输入字符串,则可以将其包装在另一个函数中。调用函数时,i
始终设置为0,例如fct("ABCCBA", 0)
。