Python3基础——递归

递归函数

如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。python3默

认递归的深度是100,如果想要更改递归深度,可以导入sys模块,设置递归深度最大值。

import sys

sys.setrecursionlimit(1000)

递归的使用:

1、求阶乘

n! = 1 x 2 x 3 x ... x n

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

2、汉诺塔

请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:

3、斐波那契数列

Fibonacci数列为:0、1、1、2、3、5、8、13、21......

数列第一项为0,第二项为1,从第三项开始,每一项为相邻前两项之和。

用递归的方法来定义:

  • F(0) = 0
  • F(1) = 1
  • F(n) = F(n-1) + F(n-2) , n>=2

时间: 2024-10-09 04:54:07

Python3基础——递归的相关文章

Python3 基础 —— 模块 Module 介绍

1.模块的作用 在交互模式下输出的变量和函数定义,一旦终端重启后,这些定义就都不存在了,为了持久保存这些变量.函数等的定义,Python中引入了模块(Module)的概念.一个Python模块其实就是一个脚本文件,具有后缀".py",例如 hello.py 就是一个模块文件名,和普通文件一样可以被永久保存在本地存储磁盘中. 2.模块的内容 Python模块中存放的是一些程序代码,例如,变量定义.函数定义或是代码语句.下面是hello.py模块的内容,其中有一个变量 a,一个函数 fun

Python基础--Python3基础语法

Python3 基础语法 编码 默认情况下,Python3源码文件以UTF-8编码,所有字符串都是Unicode字符串.当然也可以为源码文件指定不同的编码,例如: # -*- coding: cp-1252 -*- 标识符 1.第一个字符必须是字母表中字母或下划线: 2.标识符的其他的部分有字母.数字和下划线组成: 3.标识符对大小写敏感. 注:在Python3中,非ASCII标识符也是允许的. Python保留字 保留字即关键字,我们不能把它们用作任何标识符名称.Python的标准库提供了一个

01月24日【Python3 基础知识】

01月24日[Python3 基础知识] 3.4 统计字符串 3.5 乘法口诀 3.4 统计字符串 # 统计字符串给类型符号个数 s = n = f = 0 st = input("随意输入字符:") for i in st: if i.isalpha(): s += 1 elif i.isdigit(): n += 1 else: f += 1 print("字母有:{0}个,数字有:{1}个,其他符号有:{2}个.".format(s, n, f)) print

01月22日【Python3 基础知识】

01月22日[Python3 基础知识] 2.4 计算器 2.5 tuple操作 2.6 dict 2.7 其他常用操作 2.4 计算器 def add(string): total = 0 numbers = [] numbers += string.split("+") for num in numbers: total += int(num.strip()) print("{0} = {1}".format(string, total)) # def redu

01月25日【Python3 基础知识】

01月25日[Python3 基础知识] 4.1 读写文件 4.2 文件方法 4.3 python2的乱码问题 4.4 python对passwd文件进行排序 4.1 读写文件 访问 模式 说 明 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. w 打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. a 打开一个文件用于追加.如果该文件已存在,文件指针将会放在文件的结尾.也就是说,新的内容将会被写入到已有内容之后.如果该文件不存在,创建新文件

Python3基础数据类型

Python3基础数据类型 Python中变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在Python中,变量就是变量,他没有类型,我们所说的"类型"是变量所致的内存中对象类型. 等号(=)用来给变量赋值. 等号(=)运算符左边是一个变量名,右边是存储变量的值.列如: #!/usr/bin/python3 counter = 100 #整形变量 miles = 10000.0 #浮点型变量 name = "Jason" #字符串变量  

Python3基础 用 函数递归求解 一个数字的阶乘

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: # 递归 要调用函数自身,都要进行压栈,弹栈.资源消耗的问题 # 递归 要有正确的终止条件 # 递归有危险性 def f(x): if x==1 : return 1 else : return x* f(x-1) print(f(5)) """ step

Python3基础 用 函数递归实现 斐波那契数列

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: #要想往上走的话,数据结构与算法必须要学习. #小甲鱼的视频教程也有 def fab(n) : if n< 1 : print('输入有误') return -1 elif n==1 or n==2 : return 1 else : return fab(n-1)+fab(n

python3 基础 笔记记录-1

http://www.cnblogs.com/alex3714/articles/5465198.html Python赶超PHP占据第五, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言 Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众多领域. 目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube.Dropbox.BT.Quora(中国知乎).豆瓣.知乎.Google. Yahoo!.Facebook.NASA