簡體   English   中英

反轉字符串遞歸錯誤python

[英]Reversing a string recursion error 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)) 
def reverse_string(s):
    if not s: # a base case ...
       return ""
    return s[-1] + reverse_string(s[:-1]) # a recursive case

盡管這些會產生可怕的示例問題,因為現實世界中的任何人都會使用reverses[::-1]

你有無限遞歸,因為你的函數沒有基本情況,也沒有適當的遞歸情況。 您的“遞歸”包括使用相同的數據調用相同的函數。

遞歸例程有兩個主要部分:

  1. 甲鹼的情況下,條件子句返回一個簡單的值和復發。

在你的情況下,這可能是

if len(string) <= 1:
    return string
  1. 遞歸情況,您再次調用例程,並使用更簡單的問題版本 您將其與一個小的處理步驟結合起來。 您的處理步驟適用於words列表,但在控制流中完全忽略了它。 你需要解決這個問題。 我不能在這里給出建議,因為你還沒有描述你的算法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM