首页 > 编程语言 >python递归算法

python递归算法

时间:2022-10-09 15:05:55浏览次数:49  
标签:return 数列 递归 python 算法 fbList path append

递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调自己”,一个使用递归技术的方法将会直接或间接的调用自己。

利用递归可以用简单的程序来解决一些复杂的问题。比如:斐波那契数列的计算、汉诺塔、快排等问题。

递归机构包括两部分:

定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归结束的条件。

递归体。解答:什么时候需要调用自身方法。

示例:

#使用递归求n!
def factorial(n):
if n == 1:
return n
else:
return n*factorial(n-1)
print(factorial(5))

#使用递归打印所以的文件和目录的路径
allPaths = []
def getAllFiles(path, level):
global allPaths
childPaths = os.listdir(path)
for child in childPaths:
childpath = os.path.join(path,child)
if os.path.isdir(childpath):
getAllFiles(childpath, level+1)
allPaths.append('\t'*level+childpath)
getAllFiles(r'D:\data', 0)
for i in reversed(allPaths):
print(i)

示例:斐波那契数列

#斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
#在数学上,费波那契数列是以递归的方法来定义:
#F0 = 0 (n=0)
#F1 = 1 (n=1)
#Fn = F[n-1]+ F[n-2](n=>2)
#方法一:循环
def feib1(n):
fbList = []
if n == 0:
fbList.append(0)
elif n == 1:
fbList.append(0)
fbList.append(1)
else:
fbList = [0,1]
for i in range(2,n+1):
fbList.append(fbList[i-1]+fbList[i-2])
return fbList
print(feib1(10))

#方法二:递归
def feib2(n):
if n==0:
return 0
elif n==1 or n==2:
return 1
return feib2(n-1)+feib2(n-2)
print(feib2(10))













标签:return,数列,递归,python,算法,fbList,path,append
From: https://blog.51cto.com/u_15794447/5740466

相关文章

  • 挑战Python的语法练习
    前面的文章中我们已经学习了Python的许多知识点,了解了Python的基本概念和一些语法知识,算是对Python有了一个很好的了解。在接下来的最后一关,我们来一场华丽的华山论剑,我们......
  • 图论-最短路算法
    一、floyd1.介绍 floyd算法只有五行代码,代码简单,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3),可以求多源最短路问题。 2.思想: Floyd算法的基本思想如......
  • 【Web开发】Python实现Web服务器(Sanic)
    1、简介https://sanic.dev/zh/https://github.com/sanic-org/sanicSanic是Python3.7+Web服务器和Web框架,旨在提高性能。它允许使用Python3.5中添加的async/awa......
  • python的OS模块学习笔记-1
    OS模块是python和操作系统进行交互的一个接口,它提供许多操作文件及文件夹的函数。1,通过getcwd()函数获取当前文件所在路径。importospath=os.getcwd()print(path)......
  • python 默认主进程结束前,不会主动结束子进程
    1#coding=utf82importmultiprocessing3importtime456defprocess(name):7whileTrue:8print('进程名:{}正在运行...'.format(name)......
  • Python FTP 下载文件 简单示例
    简单的FTP下载,不加任何异常判断。<spanstyle="font-size:14px;">importosfromftplibimportFTPftp_addr='10.10.0.1'f=FTP(ftp_addr)f.login('anonymous')f.cwd("apk......
  • Python 二进制,十进制,十六进制转换
    十六进制到十进制使用int()函数,第一个参数是字符串'0Xff',第二个参数是说明,这个字符串是几进制的数。 转化的结果是一个十进制数。>>>int('0xf',16) 15二进制......
  • Python HTTP Basic 认证 + 下载文件到本地
    简单代码示例<spanstyle="font-size:18px;">importurllib2frombase64importencodestringurl='http://www.xxx.com/xxxx.csv'user='aaa'passwd='bbbbb'req=......
  • Python zipfile报错问题
    最近用Python来读zip的压缩包。报一个错误。Python2.6.6(r266:84292,Jun182012,14:18:47)[GCC4.4.620110731(RedHat4.4.6-3)]onlinux2Type"help","copyri......
  • Python非root用户启动python multiprocessing的semlock,提示没有权限的解决方法
    使用进程间通信的时候Python报错为<spanstyle="font-size:18px;">Traceback(mostrecentcalllast):File"web_game_sign.py",line483,in<module>count=mu......