Recursion 递归求向量的第k大数

Recursion 递归求向量的第k大数,recursion,Recursion,我有一个未排序的向量,我想递归地返回这个向量中的第k个最大数。有办法做到这一点吗 例:23416709 我想返回第二大数字,41。 谢谢 嗯 搜索向量中的最大数字,将其从向量中移除,重复k次 在伪代码中: function findKthHighestNumber(vetor, k): i := findIndexOfHighestNumber(vector) if k = 1: return vector[i] else return findKthHighestN

我有一个未排序的向量,我想递归地返回这个向量中的第k个最大数。有办法做到这一点吗

例:23416709

我想返回第二大数字,41。 谢谢

搜索向量中的最大数字,将其从向量中移除,重复k次

在伪代码中:

function findKthHighestNumber(vetor, k):
  i := findIndexOfHighestNumber(vector)
  if k = 1:
    return vector[i]
  else
    return findKthHighestNumber(concat(vector[0..i-1], vector[i+1..vector.length]), k-1)
当然,实际实现将取决于所使用的编程语言。此外,还应提供最高数目的FindIndex,但这是一个不同的任务…

您使用的帮助程序如下

(define (nth-max vec nth cur-idx cur-max  lower-than)
   ...)
或与命名let相同。其中的逻辑应该是:

如果cur idx与向量长度相同 A.n大于1:以低于当前最大值的值重复出现,并将n减少1,并将cur idx设置为0。 否则cur max就是解决方案。 如果cur idx高于cur max且低于cur max,则将cur idx作为cur max重现
您可以从低于as+Inf.0和cur max作为第一个元素开始,作为-Inf.0。如果结果是-Inf.0,则没有解决方案。。找到5个国家中第二大的

欢迎访问stackoverflow.com。请看一下关于页面。你通常应该先展示你自己的方法或解决方案展示你的工作并询问为什么它不起作用,而不是让社区解决你的问题。这只是迭代,不是递归。好吧,我可能有点简短。添加了伪代码来演示。这显示了它是如何递归的。