python递归函数求n的阶乘,优缺点及递归次数设置方式


Posted in Python onApril 02, 2020

递归函数两大特点:

1.能够调用函数自身

2.至少有一个出口(结束函数自身调用)

函数实现:

def calnum(num):
  if num != 1:
    # 递归调用自身函数
    csum = num * calnum(num - 1)
  else:
    # 设置递归出口
    csum = 1

  return csum

ret = calnum(5)
print(ret)

递归函数的缺点:

占用资源多,一般不会优先选择。

一个程序中python默认只允许调用自身1024次,超过这个次数,

python解释器会认为该程序执行有错误而报错停止

报错信息:

RuntimeError: maximum recursion depth exceeded

当然python是支持自定义次数的:

import sys
# 设置允许的调用次数为2000
sys.setrecursionlimit(2000)

补充知识:python:编写一个求菲波那奇数列的递归函数,输入n值,使用该递归函数

题目:

编写一个求菲波那奇数列的递归函数,输入n值,使用该递归函数,输出如下图形。例如:当n=6时。

0
          0  1  1
        0  1  1  2  3
      0  1  1  2  3  5  8
    0  1  1  2  3  5  8 13 21
  0  1  1  2  3  5  8 13 21 34 55

规律:

1.每行第一个数为0;

2.第n行数的个数为2n-1;

3.第n行第m列数为第n行中第m-1列和m-2列数之和;

代码:

def fei(i,j): #i为行数,j为列数
  if i == 1 or j ==1:
    return 0
  elif j == 2 :
    return 1
  else:
    return fei(i,j-1) + fei(i,j-2)
 
for i in range(1,7):
  print()
  for k in range(1,7-i): #控制空格数
    print(" ",end="")
  for j in range(1,(2*i)): 
    print(fei(i,j),"",end="")

运行结果:

python递归函数求n的阶乘,优缺点及递归次数设置方式

以上这篇python递归函数求n的阶乘,优缺点及递归次数设置方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python内置函数bin() oct()等实现进制转换
Dec 30 Python
在Python编程过程中用单元测试法调试代码的介绍
Apr 02 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
python模块之subprocess模块级方法的使用
Mar 26 Python
django 中QuerySet特性功能详解
Jul 25 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
Python ConfigParser模块的使用示例
Oct 12 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 Python
Python如何用re模块实现简易tokenizer
May 02 Python
PyTorch中的C++扩展实现
Apr 02 #Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 #Python
Python运行提示缺少模块问题解决方案
Apr 02 #Python
Pycharm配置PyQt5环境的教程
Apr 02 #Python
Python无头爬虫下载文件的实现
Apr 02 #Python
linux 下selenium chrome使用详解
Apr 02 #Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 #Python
You might like
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
php字符集转换
2017/01/23 PHP
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
浅谈jQuery效果函数
2016/09/16 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
详解Python 切片语法
2019/06/10 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
2014全国两会大学生学习心得体会
2014/03/10 职场文书
高一新生军训方案
2014/05/12 职场文书
机械操作工岗位职责
2014/08/08 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
稽核岗位职责范本
2015/04/13 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL
git stash(储藏)的用法总结
2022/06/25 Servers