//satck构造函数
function Stack() {
this.items = [];
this.top = 0;
}
/*桟具有以下方法
push() 进栈
pop() 退栈
size() 栈大小
empty() 判断栈是否为空
peek() 返回栈顶元素
clear() 清空栈
*/
//给桟添加方法
Stack.prototype = {
constructor: Stack,
push: push,
pop: pop,
size: size,
empty: empty,
peek: peek,
clear: clear
}
function push() {
var item = [];
this.items[this.top++] = item;
}
function pop() {
if (this.top === 0) {
return;
} else {
var item = this.items[this.top - 1];
this.items.length = --this.top;
return item;
}
}
function size() {
return this.top
}
function empty() {
return this.top === 0;
}
function peek() {
return this.items[this.top - 1];
}
function clear() {
this.items = [];
this.top = 0;
}
//递归函数
function factorial(n) {
if (n === 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
factorial(5);
//桟的应用:递归函数
/*function factorial(n) {
var s = new Stack(),
result = 1;
while (n > 1) {
s.push(n--);
}
while (s.size() > 0) {
result *= s.pop()
}
return result;
}*/