求助大佬

P1923 【深基9.例4】求第 k 小的数

imfkwk @ 2020-11-08 11:42:31

#include<bits/stdc++.h>
using namespace std;
int n,k,a[5000000];
void f(int st,int ed)
{
    int i=st,j=ed,x=a[(i+j)/2];
    while(i<j)
    {
        while(a[i]<x)i++;
        while(a[j]>x)j--;
        swap(a[i],a[j]);
    }
    if(i>k)f(st,i-1);
    if(i<k)f(i+1,ed);
    else
    {
        cout<<a[k];
        //exit(0)
    }
}
int main()
{
    cin>>n>>k;
    for(int i=0;i<n;i++)
    cin>>a[i];
    f(0,n-1);
}

不懂就问,为甚么不加exit(0)会有多次输出?每次调用函数都有唯一的条件,可是为甚么会运行多次呢?


|