【问题标题】:Even after entering the else of if -else the return statement is not working in Python?即使在输入 if -else 的 else 之后,return 语句在 Python 中也不起作用?
【发布时间】:2020-07-30 07:13:35
【问题描述】:
def quickSort(nums,start,end):    
    if(start < end):
        Pindex =partition(nums,start,end)
        quickSort(nums,start,Pindex-1)
        quickSort(nums,Pindex+1,end)   
    else:
        print("Else",start,end,nums)
        return nums;

即使执行了print("Else",start,end,nums0也不执行return语句

【问题讨论】:

  • 为什么说return语句没有执行?你是怎么调用 quickSort() 的?

标签: python return


【解决方案1】:

问题是您忽略了递归 quickSort 调用的返回值(顺便说一下,它通常拼写为 quicksort)。

因此,即使您的基本情况(else)返回一个值,它也会随后被丢弃。

您需要处理两个递归 quicksort 调用的返回值:

  1. 第一个结果需要分配给您随后用于下一个quicksort调用的变量
  2. 需要返回第二个结果

调整代码,修正格式,我们得到:

def quicksort(nums, start, end):
    if start < end:
        pindex = partition(nums, start, end)
        nums = quicksort(nums, start, pindex - 1)
        return quicksort(nums, pindex + 1, end)
    else:
        return nums

此外,通常首先处理递归的基本情况,因为这样我们就不需要缩进那么多(因为我们也不需要else):

def quicksort(nums, start, end):
    if start >= end:
        return nums

    pindex = partition(nums, start, end)
    nums = quicksort(nums, start, pindex - 1)
    return quicksort(nums, pindex + 1, end)

【讨论】:

    猜你喜欢
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2020-06-07
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多