【OJ】运行时错误(Runtime Error)导致递归爆栈问题

news2024/12/24 7:46:09

在进行OJ赛时,
题目:给你一个整数n,问最多能将其分解为多少质数的和。在第一行输出最多的质数数量k,下一行输出k个整数,为这些质数。
在这里插入图片描述

出现运行时错误
在这里插入图片描述
代码如下:

def main():
    # code here
    n = int(eval(input()))
    list = []
    for i in range(2, n + 1):
        if i == 2:
            list.append(i)
        for j in range(2, i):
            # i除以2到i-1之间的数,寻找素数2
            if i % j == 0:
                break
            else:
                list.append(i)
                break
    num = 0  # 统计数量
    currentValue = 0  # 当前的值
    currentList = [] #统计构成当前输入数字的质数
    Sum(currentValue, list, n,currentList)
    num=len(currentList)
    print(num)
    print(' '.join(str(i) for i in currentList))
    pass


def Sum(currentValue, list, n,currentList):
    for i in list:
        if currentValue< n:
            if currentValue+i<n:
                currentValue+=i
                currentList.append(i)
                Sum(currentValue, list, n,currentList)
                break
            if currentValue+i==n:
                currentList.append(i)
                break
            else:
                currentValue-=i
                currentList.remove(i)

if __name__ == '__main__':
    main();

程序并没有错误,在pycharm上面能够运行出结果,在马蹄集上面测试也没有问题,一提交就出错。
在这里插入图片描述
在这里插入图片描述
结论:反复运行测试,发现问题,应该是出现递归上,当输入n值足够大时,会出现n/2+1左右次递归,内存直接爆了,即递归爆栈(一般由递归时层数过深导致的)。测试用例太小了,导致未发现问题,需要修改递归代码。如下图所示:
RecursionError: maximum recursion depth exceeded in comparison
RecursionError:在比较中超过了最大递归深度
在这里插入图片描述
去掉递归,修改Sum函数为如下:
在这里插入图片描述

def main():
    # code here
    n = int(eval(input()))
    list = []
    for i in range(2, n + 1):
        if i == 2:
            list.append(i)
        for j in range(2, i):
            # i除以2到i-1之间的数,寻找素数2
            if i % j == 0:
                break
            else:
                list.append(i)
                break
    num = 0  # 统计数量
    currentValue = 0  # 当前的值
    currentList = [] #统计构成当前输入数字的质数
    Sum(currentValue, list, n,currentList)
    num=len(currentList)
    print(num)
    print(' '.join(str(i) for i in currentList))
    pass


def Sum(currentValue, list, n,currentList):
    while currentValue< n:
        for i in list:
            while currentValue+i<n:
                currentValue+=i
                currentList.append(i)
            if currentValue+i==n:
                currentList.append(i)
                break
            elif currentValue+i>n:
                currentValue-=i
                currentList.remove(i)
        break

if __name__ == '__main__':
    main();

提交通过
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1905972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣-双指针1

何为双指针 双指针指向同一数组&#xff0c;然后配合着进行搜索等活动。 滑动窗口的时候很好使用。 167.两数之和Ⅱ-输入有序数组 167. 两数之和 II - 输入有序数组 题目 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从…

2024年 春秋杯 网络安全联赛夏季赛 Web方向 题解WirteUp 部分

brother 题目描述&#xff1a;web哥&#xff0c;打点容易提权难。 打点就是最简单的SSTI。 执行下find / -user root -perm -4000 -print 2>/dev/null找一下具备suid权限的命令 /usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/bin/chsh /usr/bin/gpasswd /usr/bin/n…

WPF UI InkCanvas 导师演示画板 演示 笔记 画笔 识别

<Grid><InkCanvas Name"inkCanvas"/><Button Content"识别" Click"Button_Click" VerticalAlignment"Bottom"/></Grid> 引用内库 Ink ink new Ink(); private void Button_Click(object sender, RoutedEvent…

逆变器学习笔记(三)

DCDC电源芯片外围器件选型_dcdc的comp补偿-CSDN博客、 1.芯片的COMP引脚通常用于补偿网络&#xff1a; 芯片的COMP引脚通常用于补偿网络&#xff0c;在控制环路中发挥重要作用。COMP引脚接电容和电阻串联接地&#xff0c;主要是为了稳定控制环路、调整环路响应速度和滤波噪声…

LabVIEW机器视觉技术在产品质量检测中有哪些应用实例

LabVIEW的机器视觉技术在产品质量检测中有广泛的应用&#xff0c;通过图像采集、处理和分析&#xff0c;实现对产品缺陷的自动检测、尺寸测量和定位校准&#xff0c;提高生产效率和产品质量。 1. 电子元器件质量检测 在电子制造业中&#xff0c;电子元器件的质量检测是确保产品…

Java版Flink使用指南——自定义无界流生成器

大纲 新建工程自定义无界流 使用打包、提交、运行 在《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中&#xff0c;我们让外部组件RabbitMQ充当了无界流的数据源&#xff0c;使得Flink进行了流式处理。在《Java版Flink使用指南——将消息写入到RabbitMQ的队列中…

AntV X6 图编辑引擎速通

前言&#xff1a;参考 [AntV X6 官网](https://x6.antv.antgroup.com/) 一、简介 X6 可以快速搭建 DAG 图、ER 图、流程图、血缘图等应用。 二、快速上手 1. 安装 npm install antv/x6 --save# oryarn add antv/x6# orpnpm add antv/x6 2. 使用 2.1 初始画布 在页面中创…

利用面向AWS的Thales Sovereign解决方案保护AI之旅

亚马逊网络服务(AWS)是全球最大的云服务提供商。众所周知&#xff0c;他们致力于提供工具、解决方案和最佳实践&#xff0c;使其客户能够安全地利用AWS上的生成式人工智能 (GenAI) 工作负载。组织正在迅速使用GenAI为企业带来更高的生产力和创造力。在GenAI的几乎所有用途中&am…

Python实战项目:外星人入侵(源码分享)(文章较短,直接上代码)

✌ 作者名字&#xff1a;高峰君主 &#x1f482; 作者个人网站&#xff1a;高峰君主 - 一个数码科技爱好者 &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f4ac; 人生格言&#xff1a;没有…

vb.netcad二开自学笔记7:绘图命令的改进与扩展

1、在笔记6中创建了一个绘制直线的命令&#xff0c;若其他基本绘图命令都按那个写法会麻烦得要死&#xff0c;所以要总结其中的公共复用部分包封到一个统一的类中&#xff0c;这样在以后使用起来&#xff0c;特别是移植VBA代码时更方便&#xff0c;代码如下&#xff1a; Publi…

通过SimU-Net进行同时深度学习体素分类的纵向CECT扫描肝病灶变化分析| 文献速递-深度学习自动化疾病检查

Title 题目 Liver lesion changes analysis in longitudinal CECT scans by simultaneous deep learning voxel classification with SimU-Net 通过SimU-Net进行同时深度学习体素分类的纵向CECT扫描肝病灶变化分析 01 文献速递介绍 影像学随访是对影像学研究的解读&#x…

【C++高阶】深入理解红黑树:数据结构与算法之美

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;了解 AVL 树 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀红黑树 &#x1f4d2;1. 红黑树的概…

加油站税控云平台:税务合规新标杆,引领油站高效运营

在当今数字化快速发展的时代&#xff0c;加油站行业也面临着前所未有的变革。税务管理的合规性与运营的高效性成为了加油站发展的两大核心要素。 而加油站税控云平台的出现&#xff0c;无疑为这一传统行业注入了新的活力&#xff0c;它不仅是税务合规的新标杆&#xff0c;更是…

图形编辑器基于Paper.js教程07:鼠标画直线或移动路径

探索Paper.js: 使用鼠标绘制直线和轨迹 在数字图形设计和Web应用开发中&#xff0c;提供一个直观和互动的界面供用户绘制图形是极为重要的。Paper.js是一款功能强大的JavaScript库&#xff0c;它使得在HTML5 Canvas上绘制矢量图形变得简单快捷。本文将介绍如何使用Paper.js实现…

昇思MindSpore25天学习Day19:CycleGAN图像风格迁移互换

(TOC)[CycleGAN图像风格迁移呼唤] 模型介绍 模型简介 CycleGAN(Cycle Generative Adversaial Network)即循环对抗生成网络&#xff0c;来自论文Link:Unpaired lmage-to-mage Translation using Cycle-Consistent AdvesairalNetworks该模型实现了—种在没有配对示例的情况下学…

【单片机毕业设计选题24049】-基于STM32单片机的智能手表设计

系统功能: 显示时间&#xff0c;温湿度&#xff0c;体温信息&#xff0c;播放音乐及控制红外小夜灯&#xff0c;通过蓝牙模块连接手机APP。 系统上电后OLED显示“欢迎使用智能手表系统请稍后”&#xff0c;两秒后进入正常页面显示 第一行显示获取到的当前时间 第二行显示获…

汽车数据应用构想(六)

今天接着说车辆独有的数据信息&#xff0c;对于车辆本身的故障、损耗&#xff0c;原理上都会有相应的数据特征&#xff0c;举个例子&#xff1a; 刹车对于安全无比重要&#xff0c;但刹车性能的下降却并不会引发仪表告警。一般都是保养的时候&#xff0c;工人肉眼观察一下刹车…

文章解读与仿真程序复现思路——太阳能学报EI\CSCD\北大核心《考虑碳效益和运行策略的风电场储能优化配置》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

【scau统计学】期末考试——Excel数据分析加载项

首先机房只有MicrosoftExcel没有WPS&#xff0c;所以需要熟悉Microsoft Excel的使用。 如果没有数据分析这块选项 如果没有数据分析这个加载项&#xff0c;请先下载。 左上角点击文件&#xff1a; 点击左下角&#xff08;选项&#xff09;&#xff0c;选择加载项 点击下方&a…

【C语言】C语言编译链接和Win32API简单介绍

目录 翻译环境和运行环境翻译环境编译器预处理&#xff08;预编译&#xff09;编译链接 执行环境 Win32API是什么控制台程序控制台获取坐标COORDGetStdHandle函数GetConsoleCursorinfo函数CONSOLE_CURSOR_INFOSetConsoleCursorInfo函数SetConsoleCursorPostion函数GetAsyncKeyS…