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之eval()函数危险性浅析
Jul 03 Python
python 定义给定初值或长度的list方法
Jun 23 Python
CentOS7安装Python3的教程详解
Apr 10 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
python跨文件使用全局变量的实现
Nov 17 Python
Python析构函数__del__定义原理解析
Nov 20 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 Python
Python基本知识点总结
Apr 07 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
Snoopy类使用小例子
2008/04/15 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
jsTree使用记录实例
2016/12/01 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
python开发之函数定义实例分析
2015/11/12 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
python中使用while循环的实例
2019/08/05 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
没编程基础可以学python吗
2020/06/17 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
学校联谊协议书
2014/09/16 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
优秀校长事迹材料
2014/12/24 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers