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面向对象_详谈类的继承与方法的重载
Jun 07 Python
详解django中自定义标签和过滤器
Jul 03 Python
Python中int()函数的用法浅析
Oct 17 Python
Java分治归并排序算法实例详解
Dec 12 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
python腾讯语音合成实现过程解析
Aug 01 Python
Series和DataFrame使用简单入门
Nov 13 Python
Django跨域资源共享问题(推荐)
Mar 09 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
Python常用外部指令执行代码实例
Nov 05 Python
Python requests用法和django后台处理详解
Mar 19 Python
python和Appium的移动端多设备自动化测试框架
Apr 26 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作为Shell脚本语言使用
2006/10/09 PHP
php&java(二)
2006/10/09 PHP
PHP文本操作类
2006/11/25 PHP
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
Python实现SMTP邮件发送
2020/06/16 Python
增大python字体的方法步骤
2020/07/05 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
新闻专业应届生求职信
2013/10/31 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
小学生环保演讲稿
2014/04/25 职场文书
卫生标语大全
2014/06/21 职场文书
语文教研活动总结
2014/07/02 职场文书
2016寒假假期总结
2015/10/10 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js