[英]How to write this iterative function to be recursive?
我需要编写这个迭代的 function 来做同样的事情,但它必须是递归的。
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。
只需检查尖端和尾部,继续使用没有它们的字符串:
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])
如果我理解正确,您想检查字符串是否与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
相同的结果。 不过,它需要一个额外的索引参数。 但是,如果您希望参数仅包含输入字符串,则可以将其包装在另一个 function 中。 当您调用 function 时, i
始终设置为 0,例如fct("ABCCBA", 0)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.