为什么要有个名字 2019-07-12 15:00 采纳率: 0%
浏览 2124

python return返回的值为什么总是None

请问下这段代码中,不论把return更换为return 123、return num、return "h"等等,最后打印出的结果都不受return影响,return返回的值总是None

def sum_number(num):

    print(num)
    if num == 1:
        return
        # return 123
        # return num
        # return "h"
    sum_number(num - 1)


print(sum_number(3))

def sum_number(num):

    print(num)
    if num == 1:
        return 123
    sum_number(num - 1)


print(sum_number(3))
def sum_number(num):

    print(num)
    if num == 1:
        return "h"
    sum_number(num - 1)


print(sum_number(3))
def sum_number(num):

    print(num)
    if num == 1:
        return num
    sum_number(num - 1)


print(sum_number(3))

最后的打印结果都是:

3
2
1
None

是我在对比另一段代码:

def sum_numbers(num):

    if num == 1:
        return 1

    temp = sum_numbers(num - 1)

    return num + temp


result = sum_numbers(100)
print(result)

结果:

5050

产生的疑问

  • 写回答

1条回答 默认 最新

  • 記憶‘der 2019-07-12 18:19
    关注

    抱歉,我一开始的回复有问题 。
    def sum_number(num):
    print(num)
    if num == 1:
    return 123
    else:
    k=sum_number(num - 1)
    return k

    print(sum_number(3))
    3
    2
    1
    123

    这样就对了!主要是因为递归调用时,k=sum_number(num - 1)会一直不停的运行,需要一个合理的打断跳出,否则函数无合理返回就会显示None。所以递归调用时,条件变换两块都需要return。

    评论

报告相同问题?

悬赏问题

  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3