Search code examples
factorialscilab

Computation of factorial in SciLab


This Scilab function is supposed to compute the factorial of n. But it gives an error stated below:

function fac(n)
   if (n<=0) then n = 1
   else 
       n =  n* fac(n-1)     
   end
endfunction

The errors are stated here :

-->fac(23)

 !--error 44 
Wrong argument #2.
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
at line       5 of function fac called by :  
fac(23)

Solution

  • You forgot the return value n = in the very first line just after function, it will never return anything otherwise

    function n = fac(n)
    
       if (n<=0) then n = 1
       else 
           n =  n* fac(n-1)
       end
    
    endfunction