我不明白为什么在运行此代码时出现 taille>20000 的“分段错误”...第一部分没问题,我可以声明具有 20k 个位置的向量,但是当将它传递给递归函数时,我得到了这个错误...谢谢你帮助我!
#include <iostream>
#include <stdlib.h>
using namespace std;
long int pivoter(long int V[],long int k,long int debut,long int fin);
int main()
{
long int vmax,i,taille,k,u,*vet;
cout << "Entrer la quantite de valeurs" << endl;
cin>>taille;
cout << "Entrer la valeur maximale" << endl;
cin>>vmax;
vet = new long int[taille];
for (i=0;i<taille;i++)
{
vet[i]=1+lrand48()%(vmax);
}
k=pivoter(vet,0,0,taille-1);
delete[] vet;
return 0;
}
long int pivoter(long int V[],long int k,long int debut,long int fin)
{
long int a,c,p,s,ct;
a=V[k];
V[k]=V[fin];
V[fin]=a;
s=debut;
for (p=debut;p<(fin+1);p++)
{
if (V[p]<V[fin])
{
a=V[p];
V[p]=V[s];
V[s]=a;
s=s+1;
}
}
a=V[fin];
V[fin]=V[s];
V[s]=a;
k=s;
if (k>debut)
{
k=pivoter(V,debut,debut,k-1);
}
if (k<fin)
{
k=pivoter(V,k+1,k+1,fin);
}
return s;
}