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

return如何放置?

http://img1.sycdn.imooc.com//57e7b231000169f102910293.jpg

return后面要接函数调用表达式

但是函数调用表达式是什么鬼?

为什么这里只是return放的地方不同,出来的答案变成三个圆盘的步骤,我很懵,可以解释一下吗?

正在回答

4 回答

你这是递归思想还没有形成,主要问题不在于return,函数体中遇到return函数就结束了,之所以调用很多次是因为递归的原因,return的位置取决于你想让它在函数体中什么情况下结束。

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

不知道弄清楚了没. 我也糊涂了.

测试了一下, return后有没有都不会有输出. n=1就跳过了,这里没懂...不过测试结果如此.

所以N只会有N-1的输出,就是n-1那两个之间的print.

测试方法:

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

    if n==1:

        return

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

    print a,'-->',c

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

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

将a->c放在不同位置看输出.

print去掉,就没有输出. 而return后面加ac不影响输出结果.



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

你可以看看

http://img1.sycdn.imooc.com//57e9ba400001d60807110493.jpg

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

慕瓜2653862 提问者

但是return不是会把后面的函数被表达式的值表达出来吗,为什么还要print
2016-09-27 回复 有任何疑惑可以回复我~
#2

知而学 回复 慕瓜2653862 提问者

简而言之,你定义的函数,你理解n=2时为什么没有结果,就该差不多了。想想return结束函数并返回值给与之对应的函数这句话。
2016-10-07 回复 有任何疑惑可以回复我~

return a,'-->',c

这句话单独运行,你会发现不会打印任何数据http://img1.sycdn.imooc.com//57e7befb0001f4ec06010622.jpg

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

慕瓜2653862 提问者

这是为什么是因为这不是函数吗?
2016-09-26 回复 有任何疑惑可以回复我~
#2

大熊93

def move(n,a,b,c): if n==1: return a,'-->',b a=move(1,'A','B','C') print a 函数是有返回值的,只是你没有打印出来
2016-09-27 回复 有任何疑惑可以回复我~
#3

慕瓜2653862 提问者 回复 大熊93

我刚刚试过一次,不加print还是会有数据出来的但是会是tuple,('A','-->','B'),而且你这种print的方式,出来的也是上面的答案,不会出来A-->B.
2016-09-27 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

return如何放置?

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