Home > database >  C programming recursion segmentation fault
C programming recursion segmentation fault

Time:11-13

I am trying to using with recursion function. But I got failed which is segmentation fault.

#include <stdio.h>


int factorial( int x );
int main(){

    factorial(4);
    return 0;


}

int factorial( int x ){
       
     return x* factorial(x-1);
}

I have seen the same code in Python and C programming does not give the same success. I'm wondering why and how can I get around this problem

CodePudding user response:

The problem is that you didn´t tell the factorial function when should it end. Try instead

long factorial(int x) {  
     if (n == 0)  
        return 1;  
     else  
        return(x * factorial(x-1));  
} 

Like this when it reaches the number 0 is gonna Stop and return the factorial from x. This works because the factorial of a number n is given by: n * n-1 * n-2 * ... * 1. But you are traying to calculate it like n * n-1 * ... * -inf

CodePudding user response:

This is because there is no base condition defined in the factorial function to handle the value zero.

int factorial( int x ){

    if (x == 0)  
        return 1;  
    else  
        return x* factorial(x-1);
       
}
  • Related