【问题标题】:Why does this function return none instead of the list? [duplicate]为什么这个函数返回 none 而不是列表?
【发布时间】:2019-11-23 18:06:47
【问题描述】:

为什么函数没有返回?

我认为列表是通过引用传递的。我在递归调用中添加了返回,它起作用了。但我只是想知道为什么回报确实有所作为。

注意:我正在尝试学习递归

def find_min_max(arr, i, nums):
  if i == len(arr):
    return nums

  if arr[i] < nums[0]:
    nums[0] = arr[i]
  if arr[i] > nums[1]:
    nums[1] = arr[i]

  find_min_max(arr, i+1, nums)

【问题讨论】:

  • 为什么你有 return nums 而不是 numsreturn 是做什么的?在每个python函数的底部都有一个不可见的return None

标签: python recursion reference return


【解决方案1】:

你错过了最后一行的return语句,如果你没有返回任何东西,python默认返回None

def find_min_max(arr, i, nums):
  if i == len(arr):
    return nums

  if arr[i] < nums[0]:
    nums[0] = arr[i]
  if arr[i] > nums[1]:
    nums[1] = arr[i]

  return find_min_max(arr, i+1, nums)

【讨论】:

    【解决方案2】:

    我在递归调用中添加了 return,它起作用了。但我只是想知道为什么回报确实有所作为。

    就好像你在那个地方调用了任何其他函数一样;仅当您指定返回该值时才会返回该值。与任何其他函数调用相比,递归调用函数并没有什么特别之处。编写使用该技术的正确逻辑只有一些特别之处:)

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 1970-01-01
      • 2011-11-10
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多