【问题标题】:Can somebody please describe to me what this algorithm does?有人可以向我描述这个算法的作用吗?
【发布时间】:2021-12-26 06:05:50
【问题描述】:
t ≤ n

algorithm unknown(a[t...n])
    if t = n 
        return n
    sol ← unknown(a[t + 1...n])
    if a[t] < a[sol]
        return t
    else
        return sol

我现在想弄清楚大约 2 个小时,然后开始感到愚蠢,如果有人可以帮助我,那就太好了,谢谢!对于未知[2, 3, 7, 2, 8]

【问题讨论】:

  • 不知道unknown,你怎么会知道?这是一个错误吗?这是否打算递归调用loop??
  • 对不起,我忘了添加数组

标签: algorithm iteration


【解决方案1】:

该函数使用递归来查找给定(子)数组中最小值的索引。

递归的基本情况是给定子数组只有一个值:在这种情况下,返回值是那个元素的索引。

递归情况处理如下:

  • 使用递归,获取不包括第一个元素的子数组中最小值的索引。

  • 检查两者中哪个是最小的:第一个元素或通过递归定位的最小值。返回对应的索引。

这是对 JavaScript 的翻译。它以示例数组作为输入运行:

function unknown(a, t) {
    if (t == a.length - 1) 
        return t;
    let sol = unknown(a, t + 1);
    if (a[t] < a[sol])
        return t;
    else
        return sol;
}

let a = [4,2,6,9,7,3,8];
let i = unknown(a, 0);
console.log(`Minimum is at index ${i}, with value ${a[i]}`);
 

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 2017-03-21
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多