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

函数中少了return语句为什么就会报错

def move(n,a,b,c)

    if n==1

        print a,'-->',c

    move(n-1,a,c,b)

    print a,'-->',c

    move(n-1,b,a,c)

正在回答

4 回答

def move(n, a, b, c):
    if n ==1:
        print a, '-->', c
        return
    move(n-1, a, c, b)
    print a, '-->', c
    move(n-1, b, a, c)

正确代码是这样的, 如果 函数中的 if 语句内部没有 return 的话, 递归就会无限的执行下去,这时候就会报错.

return 在函数中 有返回值 及 中断函数执行的效果, 在这个递归调用中, 就是 递减到 n=1 的时候 就终止递归调用了。

另外 题主的代码,怎么都没有冒号(def 行, 及 if 行?)

0 回复 有任何疑惑可以回复我~
#1

Despicableme01

为什么在cmd里运行没有return那一行也不会报错并且正常出结果?
2016-05-07 回复 有任何疑惑可以回复我~
#2

清波 回复 Despicableme01

亲测, 会报 超出最大递归深度的错误, 如果你确实测出没有报错的结果, 可以截图 密我。
2016-05-07 回复 有任何疑惑可以回复我~

你这代码又少冒号又有utf-8字符.

def move(n,a,b,c):

    if n==1:

        print a,'-->',c

    else:

        move(n-1,a,c,b)

        print a,'-->',c

        move(n-1,b,a,c)

move(2, 'A', 'B', 'C')


这个没有return用else了,可运行

0 回复 有任何疑惑可以回复我~

函数里运行到return就会终止当前函数并返回一个值,如果没有return,在这个函数里n就会无限的-1,所以就报错了

0 回复 有任何疑惑可以回复我~

你这是递归吧,递归怎么能没返回值呢

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

函数中少了return语句为什么就会报错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信