recursion and cycle

by Evgeniy Kvasyuk

JavaScript

const factorial = (x) => {
	let result = 1;
  for (let i = 1; i<=x; i++){
	 result *= i;
  }
  
  return result;
}

const recursive_factorial = (x) => {
 if (x === 0){
 	return x;
 }
 return 1 * factorial(x - 1);
}


const tail_recursive_factorial = ( step, res = 1 ) => {
    if ( step < 2 ) {
    	return res;
    }
    else{
    	return tail_recursive_factorial( step - 1, res * step );
    } 
}

const recursive_pow = (x, y) =>{
if (y === 0){
	return 1;
}
 return x * recursive_pow(x, y-1);
}

const pow = (x, y) => {
	let result = 1;
	for (let i = 1; i <= y; i++){
  	result *= x;
  }
  return result;
}

console.time('recursive_factorial')
console.log(recursive_factorial(0));
console.timeEnd('recursive_factorial')

//console.time('factorial')
//console.log(factorial(10));
//console.timeEnd('factorial')

//console.time('tail_recursive_factorial')
//console.log(tail_recursive_factorial(10, 1));
//console.timeEnd('tail_recursive_factorial')