news 2026/2/5 18:08:47

笨人小白的温故知新——递归(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/2/3 23:27:21

HC32F460 DMA的链式传输(SPI从机+DMA发送/接收)

1、SPI从机DMA接收SPI从机的接收机制与串口接收类似&#xff08;参考前面文章&#xff09;&#xff0c;在使用DMA进行数据接收时&#xff0c;其配置方式也较为相似&#xff0c;因此不再重复说明DMA的具体配置过程。由于SPI外设本身不提供接收超时中断机制&#xff0c;因此无法依…

作者头像 李华
网站建设 2026/2/5 17:19:11

Zynq MPSoC 调试实录:AXI 寄存器地址重叠与 Vitis Bitstream 版本陷阱

1. 问题背景 在调试 Zynq MPSoC 的视频通路时,遇到一个诡异的现象:无法配置 v_frmbuf_wr (Video Frame Buffer Write) IP 核的 Width (0x10) 和 Height (0x18) 寄存器。 故障表现: 软件写入 Width = 800 (0x320)。 软件回读 Width,得到的值却是 0x00 或者与 Control 寄存…

作者头像 李华
网站建设 2026/2/2 22:56:42

爱舞功小程序+SaaS管理系统项目平台介绍说明书

爱舞功小程序SaaS管理系统项目平台介绍说明书一: 项目背景及简介随着舞蹈行业的发展&#xff0c;舞蹈机构在日常运营中面临着会员管理、课堂预约、数据统计、营销获客等多方面的挑战。传统的管理方式效率低下&#xff0c;难以满足机构高效盈利的需求。爱舞功项目应运而生&#…

作者头像 李华
网站建设 2026/2/3 1:08:47

一文搞懂AI大语言模型工作原理,初中生都能看懂

01 神经网络1&#xff0c;神经元&#xff1a;神经网络的最小单元神经网络的灵感来源于人类大脑的神经元&#xff0c;每个神经元就像一棵 “小树”&#xff0c;树突接收其它神经元的信号&#xff0c;细胞体处理信号&#xff0c;轴突把处理后的信号传给下一个神经元。生物神经元示…

作者头像 李华
网站建设 2026/2/3 0:49:11

3.2IT审计

1、IT审计范围的确定&#xff1a;总体范围、组织范围、物理范围、逻辑范围、其他相关内容 2、IT审计风险主要包括&#xff1a;固有风险、控制风险、检查风险和总体审计风险。 3、常用审计方法包括&#xff1a;访谈法、调查法、检查法、观察法、测试法、程序代码检查法 4、常用的…

作者头像 李华