Tlin_ @ 2021-08-25 14:18:02
今天在做此题的时候,递归函数部分出现了这个报错
[Error] too few arguments to function 'void findk(int, int, int)'
翻译: [错误]函数“void findk(int,int,int)”的参数太少
请问这是怎么回事,为什么会出现这种参数 感谢大佬Orz
(附代码)
#include <bits/stdc++.h>
#define maxn 50000000
using namespace std;
int a[maxn]={0}, ans=0, k;
void findkth ( int l, int r,)
{
if (l==r)
{
ans=a[l];
return ;
}
int i=1, j=i, flag=a[(l+r)/2], tmp;
do
{
while (a[i]<flag) i++;
while (a[j]>flag) j--;
if (i<=j)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
i++;
j--;
}
}
while (i<=j);
if (k<=j)findkth( l, j);
else if (i<=k)findkth ( l, j);
else findkth ( j+1, i-1);
}
int main(){
int n;
cin >> n>> k;
for (int i=0; i<n; i++) cin >> a[i];
findkth ( 1, n);
for (int i=0; i<n; i++) cout << a[i]<< " ";
return 0;
}
by Egg_eating_master @ 2021-08-25 14:20:52
void findkth ( int l, int r,)
你多打了一个逗号
by Valkyrie337 @ 2021-08-25 14:21:00
@Tlin_ 逗号打多了一个(((
by huyifei323 @ 2021-08-25 14:39:26
STL 大法好
用 nth_element
by Tlin_ @ 2021-08-25 16:59:25
@ConanKID 还真的是