0x1 前言

开始学习python基础的时候,有以下几种算法是面试中常见的,也是前期学习python的时候可以连带学习了解的,不卡门槛哟

0x2 实现算法的方式很多种,而算法的实现也是分程序语言的,此处用python

1.用python写一个简单的递归函数

分析:

递归函数 : 自己调用自己的函数是递归函数
递:去
归:回

触发回的过程有2个条件: 回到上一层函数调用的位置
(1) 当前这层空间函数全部执行结束的时候,触底反弹,触发回的过程
(2) 遇到return 返回值, 直接返回到上一层空间
(3) 递归: 去的过程:就是不停的开辟空间,在回的时候,不停的释放空间,递归函数就是不停的开辟和释放空间的过程
回过程:最后一层空间所有代码执行完毕,会触发回的过程,或者遇到return返回值,也会触发回的过程,回到上一层函数调用的位置

注意事项:
1.递归每一层空间都是独立的个体,独立的副本,资源不共享,可以通过参数或者返回值形成共享
2.递归务必给予跳出的条件,如果递归的层数过深,不推荐使用.容易内存溢出或者蓝屏;

代码:

def digui(n):
"""
打印1111,2222 是为了使读者看的更清楚 去 回 的两个过程区分
"""
if n > 0:
print(n, "1111111")
digui(n - 1)
print(n, "2222222")
digui(5) # 分析
"""
5 1111111
4 1111111
3 1111111 去
2 1111111
1 1111111 0 2222222 1 2222222
2 2222222
3 2222222 回
4 2222222
5 2222222
"""

2.求任意数n的阶乘 5! 5x4x3x2x1=?

def jiecheng(n):
if n <= 1:
return 1
return n * jiecheng(n - 1) res = jiecheng(5)
print(res) # 代码解析:
# 去的过程
"""
n = 5 return n*jiecheng(n-1) => 5*jiecheng(4)
n = 4 return n*jiecheng(n-1) => 4*jiecheng(3)
n = 3 return n*jiecheng(n-1) => 3*jiecheng(2)
n = 2 return n*jiecheng(n-1) => 2*jiecheng(1)
n = 1 return 1
""" # 回的过程
"""
n = 2 return n*jiecheng(n-1) => 2*1
n = 3 return n*jiecheng(n-1) => 3*2*1
n = 4 return n*jiecheng(n-1) => 4*3*2*1
n = 5 return n*jiecheng(n-1) => 5*4*3*2*1
""" # 5*4*3*2*1 = 120

3.斐波那契数列: 1,1,2,3,5,8,13,21,34,55 ,… 第n个数字是几?

def fbnq(n):
if n == 1 or n == 2:
return 1
return fbnq(n - 1) + fbnq(n - 2) res = fbnq(5)
print(res) # 代码解析
"""
斐波那契数列简单地说,起始两项为0和1,此后的项分别为它的前两项之和
F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) fbnq(5) = fbnq(4) + fbnq(3) = fbnq(3) + fbnq(2) + fbnq(3) => fbnq(2) + fbnq(1) + fbnq(2) + fbnq(2) + fbnq(1)
=> 1+1+1+1+1 = 5
"""

最新文章

  1. Android开发学习之路-提升用户体验小技巧
  2. Css--深入学习之三角形气泡窗
  3. Linux_用户级_常用命令(5):rm
  4. CListCtlr 控件的常见用法
  5. (转)java中静态代码块的用法 static用法详解
  6. Linux 卸载Oracle 11G
  7. AngularJS 的那些内置九种过滤器
  8. LFS:kernel panic VFS: Unable to mount root fs
  9. Web Api 图片上传,在使用 Task.ContinueWith 变量无法赋值问题
  10. 如何理解CSS中的浮动 :其实他就像乘坐扶梯一样
  11. webAppbuilder微件使用教程2 常用微件介绍
  12. python2与python3的区别 ,小数据池 bytes 类型
  13. java 之 MyBatis(sql 可以执行,在eclipse执行报错问题)
  14. Struts2,Spring,Hibernate优缺点
  15. 什么是python的全局解释锁(GIL)
  16. String、Date和Timestamp的互转
  17. day40 python MySQL【四】 之 【索引】【视图】【触发器】【存储过程】【函数】
  18. [JavaScript] 根据字符串宽度截取字符串
  19. 016 Java中的动态代理
  20. web服务端安全之分布式拒绝服务攻击

热门文章

  1. WSL 2 上启用微软官方支持的 systemd
  2. js动态获取当前时间(年、月、日、上午/下午、时、分、秒)
  3. Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。
  4. Java学习之路:流程控制
  5. vlunhub靶场之EMPIRE: LUPINONE
  6. Mysql索引(究极无敌细节版)
  7. JSON parse error: Cannot deserialize value of type `java.lang.Integer` from Boolean value
  8. python学习笔记---流程控制
  9. ubuntu+Django + nginx + uwsgi 部署
  10. zk系列二:zookeeper实战之分布式统一配置获取