JavaScript算法练习:翻转字符串&阶乘

翻转字符串&阶乘
Answer:

//翻转字符串
function reverseString(str){
    str = str.split('').reverse().join('');
}
reverseString('hello');
  • 1
  • 2
  • 3
  • 4
  • 5
//阶乘
function factorial(num){
    if(num <= 0){
        return 1;
    }else{
        return num*arguments.callee(num-1);
    }
}
factorial(5);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这段代码在W3c中并不能完美执行,但可以在浏览器中运行,原因是:argument.callee不是一个标准函数。

使用函数arguments.callee 函数解耦
arguments有一个名叫callee属性,该属性是一个指针,指向拥有arguments对象的函数。
原函数的执行与函数factorialize紧紧耦合到了一起,这不优雅,但可以使用。

下面这段代码可以完美运行:

function factorial(num) {
  if (num>0){
    return (num * factorial(num - 1));}
  else
  return (1);
}
factorial(5);
THE END