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读写Excel文件方法介绍
Nov 22 Python
python使用BeautifulSoup分页网页中超链接的方法
Apr 04 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
详解pandas的外部数据导入与常用方法
May 01 Python
python之yield和Generator深入解析
Sep 18 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
基于python实现文件加密功能
Jan 06 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
Jun 28 Python
Django展示可视化图表的多种方式
Apr 08 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/12/14 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
js DOM模型操作
2009/12/28 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
javascript的函数劫持浅析
2016/09/26 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
vue组件name的作用小结
2018/05/23 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
python中zip()方法应用实例分析
2016/04/16 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
Python之列表实现栈的工作功能
2019/01/28 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
python中的global关键字的使用方法
2019/08/20 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技