Python 递归赋值

Python 递归赋值,python,list,recursion,Python,List,Recursion,上面的代码打印,但它按顺序从a-h打印列表。 像这样: “abcdefgh” 我需要将每两个字母反向打印;像这样: “badcfehg”为什么要使用2D阵列?您只是交换其成员(1D数组),而不是字符串中的字符。只需传入字符串本身,索引操作符就可以访问每个字符。另外,请记住+运算符对于字符串是非交换的: def swap(aList): if len(aList) == 0: return 0 elif len(aList) == 1: print(aList[0

上面的代码打印,但它按顺序从a-h打印列表。 像这样: “abcdefgh”

我需要将每两个字母反向打印;像这样:
“badcfehg”

为什么要使用2D阵列?您只是交换其成员(1D数组),而不是字符串中的字符。只需传入字符串本身,索引操作符就可以访问每个字符。另外,请记住
+
运算符对于字符串是非交换的:

def swap(aList):

  if len(aList) == 0:
      return 0
  elif len(aList) == 1:
      print(aList[0])
      return aList[0]
  return aList[0] + swap(aList[2:])

aList = [["abcdefgh"]]

swap(aList)

为什么要使用二维阵列?您只是交换其成员(1D数组),而不是字符串中的字符。只需传入字符串本身,索引操作符就可以访问每个字符。另外,请记住
+
运算符对于字符串是非交换的:

def swap(aList):

  if len(aList) == 0:
      return 0
  elif len(aList) == 1:
      print(aList[0])
      return aList[0]
  return aList[0] + swap(aList[2:])

aList = [["abcdefgh"]]

swap(aList)

每当遇到递归问题时,您需要问自己两个问题:

  • 基本情况是什么(最简单的情况)。可以有多个
  • 如果我不在基本情况下,如何编写一些代码,在更接近基本情况的情况下调用当前函数
  • 在您的例子中,基本情况似乎是正确的,但是对于len==0,您返回的结果似乎不正确。如果字符串的长度为零,您将返回什么

    你的第二个基本情况看起来不错,但你不应该混合打印和返回。只需返回列表[0],然后就可以打印出调用swap函数的输出


    对于递归情况,只考虑字符串“ab”-如何让递归调用返回“ba”。

    每当遇到递归问题时,您需要问自己两个问题:

  • 基本情况是什么(最简单的情况)。可以有多个
  • 如果我不在基本情况下,如何编写一些代码,在更接近基本情况的情况下调用当前函数
  • 在您的例子中,基本情况似乎是正确的,但是对于len==0,您返回的结果似乎不正确。如果字符串的长度为零,您将返回什么

    你的第二个基本情况看起来不错,但你不应该混合打印和返回。只需返回列表[0],然后就可以打印出调用swap函数的输出


    对于递归情况,只考虑字符串“ab”-如何让递归调用返回“ba”。

    这里有一个非常简单的方法

    def swap(s):
       if len(s) == 0:
          return ""
       elif len(s) == 1:
          return s
       return s[1] + s[0] + swap(s[2:])
    
    print(swap("abcdefgh")) # --> badcfehg
    

    这里有一个非常简单的方法

    def swap(s):
       if len(s) == 0:
          return ""
       elif len(s) == 1:
          return s
       return s[1] + s[0] + swap(s[2:])
    
    print(swap("abcdefgh")) # --> badcfehg
    

    根据文章的标题,这可能是@KushalShinde的重复,除了这是一个显式递归赋值。是的,这是一个递归赋值,所以我需要坚持我所拥有的,并找出它为什么没有按我希望的方式打印。我做错了什么?根据文章的标题,这可能是@KushalShinde的重复,除了这是一个显式递归赋值。是的,这是一个递归赋值,所以我需要坚持我所拥有的,并找出它为什么没有按我希望的方式打印。我做错了什么?我对编程还是比较陌生的。谢谢你的见解。我对编程还是比较陌生的。谢谢你的见解。你可能不应该为他们做OP的家庭作业:)你可能不应该为他们做OP的家庭作业:)