函数递归时不能继续递归,输出不了结果,提示错误为program received signal sigsegv,segmentation fault

#include

#include

#include

void reverse( );

int main( )

{ char str[100];

int start, end;

gets(str);

scanf("%d %d", &start, &end);

reverse( str, start, end );

printf("%s\n", str);

return 0;

}

void reverse(char str[],int start,int end){

int k,len;

for(len=0;len<=100;len++){

    if(str[len]=='\0'){

        len--;break;

    }

}

if((end-start)>(len-start))end=len;

if((end - start==0)||(end - start==1)){

    k=str[end] ;str[end] = str[start] ;str[start] =k;

}

else{

    k=str[end] ;str[end] = str[start] ;str[start] =k;

    reverse (str,start++,end--);
        //调试运行到这一步时进不了递归函数,提示错误为program received signal sigsegv,segmentation fault

} 

}

你这个是要实现什么?