news 2026/4/18 5:31:50

笨人小白的温故知新——递归(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/12 5:11:09

私集同城分类信息系统 :中小创业者同城信息领域的“破局利器”

摘要&#xff1a;在互联网飞速发展当下&#xff0c;同城分类信息与行业性质网站成为获取本地信息、开展商业活动的重要平台。但中小创业者搭建功能强大、多端覆盖且易拓展的网站面临成本高、周期长、多端同步难等困境。私集同城分类信息系统 V8.0 正式版应运而生&#xff0c;为…

作者头像 李华
网站建设 2026/3/31 17:06:21

少儿编程Scratch3.0教程——06 控制积木(基础知识)

课程已经过半&#xff0c;从这节课起&#xff0c;你就将开始学习剩下的控制、侦测、运算和变量分类&#xff0c;剩下的积木块比前面学过的内容相对难一些&#xff0c;但是也更重要。难是因为它们的使用更加灵活多变&#xff0c;重要是因为想要完成一个复杂的游戏或者动画&#…

作者头像 李华
网站建设 2026/4/16 23:57:27

直播带货质检:IACheck助力商品描述与实际检测结果的一致性审核

随着直播带货成为零售行业的重要营销方式&#xff0c;商品信息的准确性和透明度越来越受到消费者关注。尤其是在直播过程中&#xff0c;主播对商品的描述往往充满了吸引力的营销语言&#xff0c;但商品的实际检测结果是否与描述一致&#xff0c;直接影响消费者的购买决策和品牌…

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

LobeChat能否申请基金?开源项目融资渠道

LobeChat能否申请基金&#xff1f;开源项目融资渠道 在AI技术加速渗透日常生活的今天&#xff0c;一个有趣的现象正在发生&#xff1a;越来越多的开发者不再满足于使用封闭的商业大模型平台&#xff0c;而是转向像 LobeChat 这样的开源聊天界面&#xff0c;构建属于自己的私有化…

作者头像 李华
网站建设 2026/4/18 5:21:35

UVa 12369 Cards

题目概述 Taha\texttt{Taha}Taha 有一副特殊的扑克牌&#xff0c;包含 525252 张常规牌和 222 张 Joker\texttt{Joker}Joker 牌。常规牌的花色分为 梅花、 方块、 红心 和 黑桃 四种&#xff0c;每种花色 131313 张。Joker\texttt{Joker}Joker 牌没有花色。Sara\texttt{Sara}Sa…

作者头像 李华
网站建设 2026/4/18 3:49:13

LobeChat能否训练微调模型?结合前端的闭环训练

LobeChat能否训练微调模型&#xff1f;结合前端的闭环训练 在企业级AI助手日益普及的今天&#xff0c;一个现实问题摆在开发者面前&#xff1a;我们部署了一个基于本地大模型的聊天系统&#xff0c;用户每天都在使用&#xff0c;反馈也不断产生——但模型却始终“原地踏步”&am…

作者头像 李华