1. 递归
① 递归算法将子问题变成与大问题形式相同,规模缩小的问题,形成递归。
② 找到子问题与大问题之间关系,形成递归表达式。
def fib(n):
if n<1:
print('wrong')
else:
if n == 1 or n == 2:
return 1
else:
return fib(n-1)+fib(n-2)
# print(fib(n-1)+fib(n-2)) # 报错,因为print()函数没有返回值,递归回返的时候递归进行不下去。
# 例如:f(4) = print(f(3)+f(2)) = print(print(f(2)+f(1))+f(2)) 由于print(f(2)+f(1))的返回值是None,所以无法递归返回
print(fib(8))
运行结果:
- 21
[ 完 ]
[ Python 其他笔记,见 "我的主页→专栏" ]
2. 分享经验
目前,使用Python两年了,分享一点自己的经验
2.1 学习
① 找手撕代码的视频,一句一句写代码,还讲自己是如何思考的视频,不要找老师直接讲一套写好了的代码的视频。
② 找点击量比较高的老师(群众的眼睛是雪亮的),代表优秀的教学,但是要找适合自己的老师(能激发你学计算机兴趣的老师)。
③ 不管多简单的程序都要自己打一下,看一遍依旧是别人的,做了一遍,才是自己的。只有做一遍才会获得经验,"模仿+总结" 是学习非常快的方法。
2.2 验证
① 我学Python的时候,有时候代码会报错,就主动调试代码,打印变量的值,通过变量值是否符合自己的预期,让自己知道该段程序是否正常运行,从而确定报错的位置和原因。
② 我加了一些Python学习微信群,我有些知识点(or代码)不懂的时候,我就问她们,然后把她们的阐述,组织语言、逻辑,反述出来,这样吸收率非常高。
③ 学习路上经常会碰到疑惑的问题,碰到不懂的问题,搜索相关信息,有一个猜想,然后请教别人来验证猜想,不让别人灌输知识。 别人灌输的,记不牢;验证后的记得牢,并且有成就感。
2.3 大忌
① 学Python的大忌:学到某个知识点,发现有点晦涩难懂,就不继续往前学,不停的反复琢磨其中的原理。
② 如果已经实现了需求,但是不是很理解其中的原理,先尽量理解原理,如果不理解,继续往前学,因为有些原理是通过后面的知识进行理解的,全部学完后会发现有些以前不懂的豁然开朗。
2.4 讲解
① 如果一个问题,能给别人讲的非常清晰明了,这才说明自己是真的懂了,而且讲解完后这个知识点会记得非常深刻。
② 举个例子,别人问自己一道题目(或知识点),虽然自己以前没有遇到过这道题,但是自己把它做出来了,并且给别人讲清楚了,那么自己这道题里面的知识点会理解的很透彻、记得非常深刻。