当前位置: 首页 > wzjs >正文

做平台网站一般有php还是js兴化 网站开发

做平台网站一般有php还是js,兴化 网站开发,百度定位店铺位置怎么设置,郑州seo优化阿亮这道题的关键在于理解递归转非递归与 “是否用栈” 的本质逻辑,和 “局部变量” 无关,核心看递归的调用上下文是否需要保存。 一、递归的本质:依赖 “调用栈” 递归函数执行时,系统会用调用栈保存: 每层递归的参数、…

这道题的关键在于理解递归转非递归与 “是否用栈” 的本质逻辑,和 “局部变量” 无关,核心看递归的调用上下文是否需要保存

一、递归的本质:依赖 “调用栈”

递归函数执行时,系统会用调用栈保存:

  • 每层递归的参数、返回地址、局部变量(不管是不是局部变量,只要递归嵌套,就需要保存上下文)。

比如经典的递归求和:

int sum(int n) {if (n == 1) return 1;// 递归调用,sum(n-1) 依赖上一层的 nreturn n + sum(n-1); 
}

这里 sum(3) 调用 sum(2)sum(2) 调用 sum(1),每层的 n(局部变量)会存在栈里。

二、“是否用栈” 的关键:是否需要模拟 “调用栈”

递归转非递归时,不管有没有局部变量,只要递归有多层嵌套(需要保存上下文),就可能需要用栈手动模拟调用栈。

反例 1(无局部变量,但需要栈):

// 递归打印 1~n,无局部变量(除了参数)
void print(int n) {if (n == 0) return;print(n-1);printf("%d ", n);
}

转非递归时,仍需用栈保存 n 的值(模拟调用栈的嵌套),否则无法按顺序打印 1 2 3

反例 2(有局部变量,但无需栈):

// 尾递归:递归调用在最后,无额外计算
int tail_sum(int n, int res) {if (n == 0) return res;// 递归调用后直接返回,无需保存复杂上下文return tail_sum(n-1, res + n); 
}

这种尾递归可直接转迭代(用变量代替栈):

int iter_sum(int n) {int res = 0;for (int i = 1; i <= n; i++) {res += i; // 无需栈,迭代累加}return res;
}

此时,即使有局部变量(res 是函数参数,类似局部变量),也不用栈

三、题目逻辑错误点

题目说 “只有使用局部变量的递归,转非递归才必须用栈”,但实际:

  • 不用局部变量的递归(如 print 函数),转非递归可能也需要栈;
  • 用局部变量的递归(如尾递归 tail_sum ),转非递归可能不需要栈。

“是否用栈” 和递归的嵌套结构(是否需要保存上下文) 有关,和 “是否用局部变量” 无关。因此题目说法 错误

http://www.dtcms.com/wzjs/793089.html

相关文章:

  • 寻找做网站的建立一个小型网站多少钱
  • 新新手手网网站站建建设设安徽住建和城乡建设厅官网
  • 浏览器收录网站qq群推广软件
  • 做公司网站的流程小企业网站建设多少钱
  • 广州专业网站长春做网站seo的
  • 哈尔滨网站搭建南昌做网站市场报价
  • html 网站添加悬浮二维码常用的网络营销工具有哪些?
  • 如何用ps做网站平面图霍邱网站设计
  • 谁有做网站比较厉害的网站建设及推广方案ppt模板
  • 免费html网站制作成品企业网站建设运营的灵魂
  • 机构网站建设晋城中英文网站建设
  • 粪池怎样建设长沙公交优化
  • 建设银行境外汇款申请书网站做电商网站公司
  • 企业网站每年续费吗个人网站推荐
  • asp网站知道用户名是admin深圳网站建设公司收费
  • 北京城乡和住房建设部网站唐山网站开发公司
  • 织梦xml网站地图网页微信版官方下载
  • 如何做网站系统网站的后期维护自己怎么做
  • 建网站卖产品怎么样自己怎么做网站建设
  • 黑客怎么攻击网站网站建设平台讯息
  • 深圳做网站google推广网站建设数据表设计 性别
  • 网站下拉框怎么做做网站的上海公司有哪些
  • 四川网络推广公司seo金融术语
  • 桂林网站制作培训学校中国最大的招标网
  • 浙江省住建和城乡建设厅官方网站盛世阳光-网站建设
  • 微信里有人发做任务网站中建八局第一建设有限公司董事长
  • 建设网站需要花费app网站制作要多少费用
  • 要点营销网站北京app开发流程
  • 做网站龙头wordpress 模板制作软件
  • mooc网站开发流程图网站建设评比办法