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+Splinter自动刷新抢12306火车票
Jan 03 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
python实现最长公共子序列
May 22 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
python八皇后问题的解决方法
Sep 27 Python
python实现将汉字保存成文本的方法
Nov 16 Python
python函数与方法的区别总结
Jun 23 Python
python误差棒图errorbar()函数实例解析
Feb 11 Python
Django 后台带有字典的列表数据与页面js交互实例
Apr 03 Python
Python如何合并多个字典或映射
Jul 24 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 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新手上路(五)
2006/10/09 PHP
adodb与adodb_lite之比较
2006/12/31 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
Python及PyCharm下载与安装教程
2017/11/18 Python
微信跳一跳python代码实现
2018/01/05 Python
Django配置文件代码说明
2019/12/04 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
详解anaconda安装步骤
2020/11/23 Python
python中最小二乘法详细讲解
2021/02/19 Python
百度软件工程师职位
2013/02/14 面试题
瀑布模型都有哪些优缺点
2014/06/23 面试题
旅游项目开发策划书
2014/01/18 职场文书
ktv中秋节活动方案
2014/01/30 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
认购协议书范本
2014/04/22 职场文书
学生保证书范文
2014/04/28 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
催款通知书范文
2015/04/17 职场文书
反腐倡廉观后感
2015/06/08 职场文书
医院病假条怎么写
2015/08/17 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server