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绘制铅球的运行轨迹代码分享
Nov 14 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
python实现linux下抓包并存库功能
Jul 18 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
浅谈python多进程共享变量Value的使用tips
Jul 16 Python
Django 通过JS实现ajax过程详解
Jul 30 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python函数参数类型及排序原理总结
Dec 19 Python
pytorch实现mnist分类的示例讲解
Jan 10 Python
执行Python程序时模块报错问题
Mar 26 Python
弄清Pytorch显存的分配机制
Dec 10 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
默默简单的写了一个模板引擎
2007/01/02 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
对联广告js flash激活
2006/10/19 Javascript
jQuery自定义添加"$"与解决"$"冲突的方法
2015/01/19 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
three.js 入门案例详解
2018/01/23 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
Python Socket编程详细介绍
2017/03/23 Python
Python3标准库总结
2019/02/19 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
酒店服务实习自我鉴定
2013/09/22 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
高中学生评语大全
2014/04/25 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
应届生找工作求职信
2014/06/24 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
交流会主持词
2015/07/02 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers