反转字符串递归错误python

时间:2018-09-26 16:40:43

标签: python

当我返回.join方法以反转字符串时,我调用函数本身来这样做。仍不使用内置python方法(例如,reversed方法)如何仍然可以反转此字符串。

def reverse_string_3(string):

    length = len(string)
    spaces = [' ']
    words = []
    index_tracker = 0

    while index_tracker < length:
        if string[index_tracker] not in spaces:
            beginning_of_word = index_tracker

            # we only want to increment when the index tracker is a letter and not spaces
            while index_tracker < length and string[index_tracker] not in spaces:
                index_tracker += 1

            words.append(string[beginning_of_word:index_tracker])

        index_tracker += 1

    return "".join(reverse_string_3(string)) 

2 个答案:

答案 0 :(得分:1)

def reverse_string(s):
    if not s: # a base case ...
       return ""
    return s[-1] + reverse_string(s[:-1]) # a recursive case

尽管这会造成可怕的示例问题,因为现实世界中的任何人都只会使用reverses[::-1]

答案 1 :(得分:0)

您具有无限递归,因为您的函数没有基本情况,也没有适当的递归情况。您的“递归”包括用相同的数据调用相同的函数。

递归例程有两个主要部分:

  1. 一个基本情况,一个条件子句,它返回一个简单值,并且不重复出现。

您的情况可能是

if len(string) <= 1:
    return string
  1. 一个递归案例,在该案例中您再次调用例程,并带有一个简单版本的问题。您将此与一个小的处理步骤结合在一起。您的处理步骤适用于words列表,但在控制流中完全忽略了该步骤。您需要解决此问题。在这里我不能给出建议,因为您还没有描述算法。