栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

了解双重递归

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

了解双重递归

听起来您已经了解了基本情况并知道了递归的工作原理,所以理解您的特定示例的关键是要注意给定初始数组

a = [1,2,10,15,16,4,8]

您是在“顶级”计算两件事:

maxval1 = MaximumElement(array, 0, 3); maxval2 = MaximumElement(array, 3, 4);

这说

  • 使
    maxval1
    数组的最大值在大小为3的索引0开始的范围内
  • 使
    maxval2
    数组的最大值在大小为4的索引3的范围内

所以

  • maxval1
    确实会是10
  • maxval2
    确实会是16

您的答案将是16。

递归的好处在于,您不必担心过多地跟踪事物。如果您相信自己的基本情况以及获得基本情况的方式,那么了解一个层次就足够了。

我认为您陷入了“所有地狱都破灭”的困境,因为第二个递归调用以起始索引0开头。事实并非如此。它从索引3开始。(也就是说,假设您的第二个递归调用是一个计算

maxVal2
)。

这是您的计算方式的简短记录。我冒昧给你的函数重命名为

m
和假设
maxVal1
,并
maxVal2
进行了计算多一点“功能”。

a = [1,2,10,15,16,4,8]m(a, 0, 7)= m(m(a, 0, 3), m(a, 3, 4))= m(m(m(a, 0, 1), m(a, 1, 2)), m(a, 3, 4))= m(m(a[0], m(a, 1, 2)), m(a, 3, 4))= m(m(1, m(a, 1, 2)), m(a, 3, 4))= m(m(1, m(m(a, 1, 1), m(a, 2, 1)), m(a, 3, 4))= m(m(1, m(a[1], a[2])), m(a, 3, 4))= m(m(1, m(2, 10)), m(a, 3, 4))= m(m(1, 10), m(a, 3, 4))= m(10, m(a, 3, 4))= …= 16


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650060.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号