Discuss / Python / 希望各位能指点小弟,万分感谢~

希望各位能指点小弟,万分感谢~

Topic source

Todayzhou

#1 Created at ... [Delete] [Delete and Lock User]

小弟几乎没有编程基础,想学学python以便更有利于工作,怎奈天资愚钝坚持看到这章递归函数就真的理解不了了,小弟提出以下疑问,麻烦各位大大能帮帮小弟! 先说说廖老师最开始的例子吧。

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

这里举例fact(5),判断5不等于1所以继续执行return,因为return里有继续调用了fact,所以继续返回来执行。 当n=2时,n-1=1了,匹配了if条件,return 1,然后就没有啦?按照逻辑不应该继续往下,然后n变成0,继续变成-1呀!!难道说看到return了以后,就知道不能再继续了吗.... 可能这些问题对各位大哥来说很可笑,但是我真的不知道,让我哭一会,我不想放弃!

再来看看作业部分....希望各位大哥不嫌我啰嗦。

def move(n, a, b, c):
    if n == 0:
        return None
    ①move(n-1,a,c,b)
    ②print(a,'->',c)
    ③move(n-1,b,a,c)
    ④return None
move(3, 'A', 'B', 'C')

这是其中一位大哥留下的答案,直接给我看蒙了。我想提一些问题,但却不知从何说起,太多不理解! 1、move(3, 'A', 'B', 'C')了以后,就调用了move函数,n初始赋值为3,不等于0,所以跳过条件执行①,①执行完成就变成了move(2,a,c,b),这个时候是直接重新从最上面开始,还是继续执行②呢..... 2、我试着①执行完了以后继续返回上面重新往下,慢慢的就变成了move(0,a,c,b),这个时候返回以后会匹配if条件了,然后直接return None了,这个返回代表什么呀!! 3、啥时候执行②,啥时候执行③,④又是做什么用的...

现在是凌晨,晚上11点还是处理工作上的事情,每天都坚持看一节廖老师的教程,想逼一下自己系统的学一下python,毕业工作以后每天工作忙碌,几乎就没有系统的学过其他东西,我想提升一下自己,想和各位大哥一样轻松的理解廖老师传授的东西,希望各位大哥能帮帮我,谢谢了!

return之后函数就返回了 不会继续往下执行了

Swordinstone

#3 Created at ... [Delete] [Delete and Lock User]

同时文科生的路过……这个算法也卡了一天了…… 明天继续想想到底是怎么回事…… 话说我算了一下这篇教程还剩下100节,每天学习三节差不多一个月学完……

Swordinstone

#4 Created at ... [Delete] [Delete and Lock User]

哥们儿我想我大概弄懂是啥意思了,写了篇文章,你可以看看,如果不懂再私聊:http://www.jianshu.com/p/b71c016e3266

陈大粽

#5 Created at ... [Delete] [Delete and Lock User]

小白谢谢楼上分享的资料,很有助理解

kingsley_磊

#6 Created at ... [Delete] [Delete and Lock User]

调用函数会在内存中开辟新的区域,return以后就会返回到原来函数的语句继续执行。


  • 1

Reply