当前位置: 首页 > news >正文

递归函数的精确时间统计

import time
from functools import wrapsdef recursion_timer(func):"""装饰器:用于统计递归函数的总执行时间"""# 闭包变量:跟踪是否已经开始计时和开始时间is_timing = Falsestart_time = 0.0@wraps(func)def wrapper(*args, **kwargs):nonlocal is_timing, start_time# 递归入口:第一次调用时开始计时if not is_timing:is_timing = Truestart_time = time.perf_counter()  # 使用高精度计时器# 执行递归函数result = func(*args, **kwargs)# 递归出口:最后一次返回时结束计时if is_timing:is_timing = Falseend_time = time.perf_counter()total_time = end_time - start_timeprint(f"递归函数 {func.__name__} 总执行时间: {total_time:.6f} 秒")return resultreturn wrapper# 示例1:计算阶乘的递归函数
@recursion_timer
def factorial(n):if n <= 1:return 1return n * factorial(n - 1)# 示例2:计算斐波那契数列的递归函数
@recursion_timer
def fibonacci(n):if n <= 1:return nreturn fibonacci(n - 1) + fibonacci(n - 2)# 测试
if __name__ == "__main__":print("计算 5! 的结果:", factorial(5))print("计算斐波那契数列第 10 项:", fibonacci(10))
http://www.hskmm.com/?act=detail&tid=31696

相关文章:

  • [HZOI]CSP-S模拟32
  • 《植物大战僵尸融合版 V3.0(神秘版本)》详细图文教程:安装、存档继承与玩法解析
  • 在 Qt Creator 中使用 Promote 功能让 QTabWidget 显示自定义页面
  • AI赋能标准化流程:智能汽车软件CI/CT最佳实践新范式
  • The 2023 ICPC Asia Shenyang Regional Contest K. Maximum Rating
  • 用积木思维搞定TCP/IP——LuatOS快速上手指南
  • 2025 年江门办公室装修公司最新推荐排行榜:助力企业避开装修陷阱,精选优质服务品牌
  • WPF自动弹出软件键盘
  • 【碎片化学习】JMeter中常用的设置优化
  • win10系统以太网未识别网络 没有有效ip配置怎么办?
  • 怎么考PostgreSQL PG中级认证证书
  • 大学本科及研究生金融专业题库数据集:109157条高质量中文金融教育题库数据,涵盖银行证券保险投资理财等全领域,支持智能教育系统与机器学习算法训练的专业数据集
  • 【比赛记录】2025CSP-S模拟赛61
  • 基于Rokid CXR-S SDK的智能AR翻译助手技术拆解与实现指南
  • VRED 2025:专业三维可视化与虚拟现实领域的高效设计工具
  • 2025年办公与商业空间软膜天花系统推荐榜:办公室/酒店/展厅/商场/汽车4S店软膜天花厂家,专注光环境与装饰一体化解决方案
  • SZMS 251009 订题赛 题解
  • Debian 12安装docker的正确方法
  • 【流量网关】k8s与apisix统一的流量入口方案(内网版)
  • 基于STM32F4系列MCU和CS5530 24位SDADC的称重传感器系统实现
  • 2025 年环保板材厂家最新推荐榜:硬包板 / 竹木纤维板等全品类 企业深度解析
  • kong 网关下集成 Consul服务注册与发现
  • cad圆滑连接两段线:blend
  • 在 gitea 服务器端查询 lfs 文件占用情况
  • HDR图像生成算法详解
  • Introduction: Why Optimization?
  • 基于MATLAB的二自由度机械臂PID控制仿真
  • Spring AOP原理
  • Ventoy引导Kali live USB持久化
  • 知识库管理工具深度测评:ONES、Confluence 等10款工具全面对比