繁体   English   中英

如何将这个迭代的 function 写成递归的?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM