0

我不明白为什么在运行此代码时出现 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;
}
4

0 回答 0