【问题标题】:Recursive function for reversing a list is returning "None" [duplicate]用于反转列表的递归函数返回“无”[重复]
【发布时间】:2021-04-16 10:04:55
【问题描述】:

我正在尝试使用递归函数来反转 python 中的列表。下面给出的 python 程序采用三个参数一个列表lst,一个起始索引start,从该列表应该反转的位置和一个结束索引end。但是函数返回None,我无法理解为什么?

def reverse(lst,start,end):
    if start>=end:
        return lst
    else:
        temp=lst[start]
        lst[start]=lst[end]
        lst[end]=temp
        reverse(lst,start+1,end-1)

【问题讨论】:

  • reverse(lst,start+1,end-1) 更改为return reverse(lst,start+1,end-1)
  • 查看else 案例。它递归调用自身,然后丢弃结果并隐式返回None。要修复它,只需添加缺少的 return 语句。

标签: python python-3.x return return-value nonetype


【解决方案1】:

你也需要从 else 部分返回。如您所知,递归函数的 if 部分通常是基本条件,很可能是最后一次函数调用中的运行。所以你也需要从之前的函数调用中返回答案。

def reverse(lst,start,end):
      if start>=end:
         return lst
      else:
        temp=lst[start]
        lst[start]=lst[end]
        lst[end]=temp
        return reverse(lst,start+1,end-1)

【讨论】:

  • 当然。实际上,我没有搜索这个问题。下次会注意@TomKarzes。
猜你喜欢
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
相关资源
最近更新 更多