为了账号安全,请及时绑定邮箱和手机立即绑定

递归 - Python - 为什么 print(Foo) 显示的内容与

递归 - Python - 为什么 print(Foo) 显示的内容与

哔哔one 2021-10-26 18:37:29
为什么 print(foo) 显示的内容与 print(functionreturningthesame()) 不同查看输出,在函数中打印数组显示正确答案,但打印函数的返回值没有。我可能对递归迭代感到困惑......def AreNotOpposite(a,b):  if a == "NORTH" and b == "SOUTH":    return False  if a == "SOUTH" and b == "NORTH":    return False  if a == "WEST" and b == "EAST":    return False  if a == "EAST" and b == "WEST":    return False  return Truedef canBeBetter(arr):  for i in range(len(arr)-1):    if not AreNotOpposite(arr[i],arr[i+1]):      return True  return Falsedef dirReduc(arr):  re = []  avoid = -1  for i in range(len(arr)):    if avoid == i:      continue    if i+1 == len(arr):      re.append(arr[i])    elif AreNotOpposite(arr[i],arr[i+1]):      re.append(arr[i])    else: #do not append neither the nextone      avoid = i+1  if canBeBetter(re):  #can reduce more?    dirReduc(re)  else:    print(re)    return reprint (dirReduc(['NORTH', 'WEST', 'EAST','SOUTH', 'NORTH','SOUTH','EAST','NORTH']))输出:['EAST', 'NORTH']None
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

我想你想要这样的东西


  if canBeBetter(re):  #can reduce more?

    return dirReduc(re)

  else:

    return re


查看完整回答
反对 回复 2021-10-26
?
米脂

TA贡献1836条经验 获得超3个赞

您需要返回递归调用的结果(否则您的函数将到达逻辑末尾并简单地 return None):


if canBeBetter(re):  #can reduce more?

  return dirReduc(re)

else:

  print(re)

  return re


查看完整回答
反对 回复 2021-10-26
  • 3 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信