news 2026/4/16 20:04:44

笨人小白的温故知新——递归(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/4/16 14:04:08

41、FreeBSD 用户资源与常用命令指南

FreeBSD 用户资源与常用命令指南 1. FreeBSD 相关邮件列表 FreeBSD 有多个邮件列表,用于不同目的,以下是各列表的介绍: | 邮件列表名称 | 功能 | 注意事项 | | — | — | — | | freebsd - bugs | 包含所有针对 FreeBSD 提交的错误报告。 | 不要直接向此列表发送错误报…

作者头像 李华
网站建设 2026/4/16 10:21:08

少儿编程Scratch3.0教程——05 事件积木(基础知识)

在前面的课程中&#xff0c;你已经学习了使用动作积木来让角色移动&#xff0c;使用外观积木来让角色变换造型&#xff0c;使用声音积木来让角色发出声音&#xff0c;以上这些积木块的效果&#xff0c;你都可以从舞台上看见它们或是听见它们。接下来&#xff0c;你就要学习一种…

作者头像 李华
网站建设 2026/4/16 10:14:17

Qwen-Image-Edit生态集成与技术前瞻

Qwen-Image-Edit生态集成与技术前瞻 在数字内容创作需求爆发式增长的今天&#xff0c;设计师、营销人员乃至普通用户都面临着一个共同挑战&#xff1a;如何快速生成高质量、可编辑且符合品牌规范的视觉素材&#xff1f;传统的设计流程依赖专业工具和人工反复修改&#xff0c;效…

作者头像 李华
网站建设 2026/4/16 10:13:45

Windows部署GPT-SoVITS远程语音复现指南

Windows部署GPT-SoVITS远程语音复现指南 在内容创作与AI交互日益融合的今天&#xff0c;个性化语音合成正从“黑科技”走向日常工具。无论是为短视频配音、打造专属语音助手&#xff0c;还是实现跨语言朗读&#xff0c;拥有一套属于自己的高保真语音引擎&#xff0c;已经成为不…

作者头像 李华