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