Search code examples
javascriptfactorial

Factorial function returning NAN


I am new to javascript, I am trying to write a function that calculate the factorial of a given number and also replace the fourth element. I expect when the code above is run, it should produce 6GeXmanX but instead i am getting NaNXermXny

function Recursion(num) {
  
  if (num=== 0 || num===1){
    return 1;
  }
  result= Recursion(num-1)*num;
  
  results = result + 'Germany'
  const str = results.split('')
  const nth = 4
  var replaceWith = 'X'
  for (var i = nth-1; i < str.length-1; i+=nth){
    str[i]= replaceWith;
    
    
  }
  //y = (results.join(""))
  return (str.join(""));
  
  }
  


  // code goes here  
   
// keep this function call here 
console.log(Recursion(3));

Solution

  • First, you need to split the factorial function into a separate function.

    Second, in the for condition, the i should be i < str.length not i < str.length - 1 as it will not iterate over the last letter.

    function factorial(num) {
      
      if (num=== 0 || num===1){
        return 1;
      }
      return  factorial(num-1)*num;
      
    }
      
      
    function func(num) {
      let results = factorial(num) + 'Germany'
      const str = results.split('')
      const nth = 4
      var replaceWith = 'X'
      for (var i = nth-1; i < str.length; i+=nth){
        str[i]= replaceWith;
      }
      //y = (results.join(""))
      return (str.join(""));
      
      }
      
    
    
      // code goes here  
       
    // keep this function call here 
    console.log(func(3));