news 2026/7/7 8:23:57

笨人小白的温故知新——递归(4)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
笨人小白的温故知新——递归(4)

1202:Pell数列

其实本来是一段很简单的代码,但是这个题带给我的收获很大,所以我决定来做一个自己的反思回顾。

来讲一下我做这道题遇到的问题(主要是解决运行超时的问题):

1)我一开始并没有用记忆化,导致运行超时。

2)我用了一个记忆化(但是是错的)

long long pell(int k){ if(!pell(k)) return ; }

现在,我已经知道了我的错因:!pell(k)试图判断返回值是否为 0,但pell(k)本身又会无限递归,永远无法执行到后续逻辑;

3)然后我做了如下改动:

const int MOD = 32767 , N = 1e6+10; long long a[N] ; long long pell(int k){ if(a[k] != 0) return a[k] ; if(k == 1) return 1 ; if(k == 2) return 2 ; a[k] = (2*pell(k-1) + pell(k-2))%MOD ; return a[k] ; }

这样,就获得了一个AC代码:

#include <iostream> #include <stdio.h> using namespace std ; const int MOD = 32767 , N = 1e6+10; long long a[N] ; long long pell(int k){ if(a[k] != 0) return a[k] ; if(k == 1) return 1 ; if(k == 2) return 2 ; a[k] = (2*pell(k-1) + pell(k-2))%MOD ; return a[k] ; } int main() { int n , s ; scanf("%d" , &n) ; while(n--){ scanf("%d" , &s) ; printf("%lld\n" , pell(s)) ; } return 0; }

你以为这就结束了?NO~~~ 好奇的我,又换了一种:

a[k] = 2*pell(k-1)%MOD + pell(k-2)%MOD ;

但是却运行超时了。why?

笨笨的我问了豆包,豆包说:

“取模是「相对耗时」的操作

取模(%)本质是除法 + 求余,属于 CPU 的复杂指令(比加法 / 乘法慢得多)。前者只执行 1 次取模,后者执行 2 次,仅这一步就会产生「指令数翻倍」的开销 —— 尤其是在循环 / 递归的高频调用场景下(比如计算 pell (1e5)),两次取模的累计耗时会被放大,最终体现为「后者更慢」。”

今天也回顾了好几道题,但是都比较简单,所以没有写到我的博客里。(嘻嘻

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 7:27:58

YT29B凿岩机吕梁精准检测稳定性能解析

近年来&#xff0c;国内凿岩设备市场呈现出明显的区域分化特征。以吕梁为代表的山西资源型城市&#xff0c;因矿山开采、隧道掘进及基础设施建设需求持续释放&#xff0c;对风动凿岩机、气腿式凿岩机等主力机型的采购活跃度居高不下。据2025年第三季度行业监测数据显示&#xf…

作者头像 李华
网站建设 2026/7/6 14:34:44

26、网络连接与安全全解析

网络连接与安全全解析 在当今数字化时代,网络连接和网络安全是我们日常使用计算机时不可忽视的重要方面。下面我们将详细探讨网络连接相关文件、网络安全的多个要点,包括密码安全、远程登录以及防火墙配置等内容。 网络连接相关文件问答 首先,我们来看一些关于连接互联网…

作者头像 李华
网站建设 2026/7/2 9:33:48

2025.12.16 HSRP双机热备

1&#xff09;拓扑图2&#xff09;实验步骤2.1 PC机配置PC0 PC1PC22.2 路由器配置2.3 交换机配置SW3 SW1SW22.4 测试PC0 ping PC1PC0 ping PC2

作者头像 李华
网站建设 2026/7/7 6:01:43

万全智能RFID模块设备他们产品档次怎么样

万全智能的RFID模块设备在行业内属于中高端档次&#xff0c;其产品特点主要体现在以下方面&#xff1a; 技术性能 读写能力 支持多协议兼容&#xff08;如EPC Class1 Gen2、ISO 18000-6C等&#xff09;&#xff0c;读写距离可达10米以上&#xff08;超高频型号&#xff09;&…

作者头像 李华
网站建设 2026/7/6 12:43:46

RuoYi v1.2.0 全端开发神器:让多端适配从未如此简单!

一、 引言&#xff1a;为什么选择 RuoYi APP 框架&#xff1f;在移动应用开发领域&#xff0c;跨平台适配一直是开发者的噩梦。传统方案需为 iOS、Android、小程序等多端单独开发&#xff0c;成本高、效率低。而 RuoYi v1.2.0 基于 UniAppUniUI 的轻量级框架&#xff0c;彻底打…

作者头像 李华
网站建设 2026/7/6 13:38:06

少儿编程Scratch3.0教程——03 外观积木(基础知识)

在前面的两节课中&#xff0c;我们一起学习了 动作积木的基础知识 和 项目练习 &#xff0c;这节课我们就开始来学习第二种积木类型&#xff0c;外观积木。其实在上节课的项目练习中&#xff0c;我们就已经提前使用过外观积木中的说话积木&#xff0c;这节课我就带你来看看除了…

作者头像 李华