反转字符串(使用栈的先进后出原则 )
function Stack() {
this.data = []; //保存栈内元素
this.top = 0; //保存栈顶位置
}
//原生链增加入栈和出栈方法
Stack.prototype = {
//入栈:在栈顶加入元素,元素个数+1
push: function push(element) {
this.data[this.top++] = element;
},
//出栈:先返回栈顶的元素,元素个数减1
pop:function(){
return this.data[--this.top];
},
//返回栈内元素的长度
length: function() {
this.top;
}
}
//在栈内实现输出
function reverString(str) {
var s = new Stack();
//将字符串转换成数组
var arr = str.split('');
//存储元素
var result = '';
for(var i = 0; i < arr.length; i++){
s.push(arr[i]);
}
//元素出栈
for(var i = 0; i <arr.length; i++){
result +=s.pop(i);
}
return result;
}
var str = 'abcdefg';
console.log(reverString(str));
10以内的奇数和、偶数和
//奇数和 //偶数和
function jsum(n){ function osum(n) {
if(n % 2 == 0){ if (n % 2 != 0) {
return n--; return n--;
} }
if(n == 1){ if(n == 1){
return 1;
} else { } else {
return n + jsum(n - 2); return n + jsum(n - 2);
} }
} }
console.log(jsum(5)) console.log(osum(2));
斐波那契数列
//斐波那契数列 1,1,2,3,5,8,13,21,34,55 //阶乘
function sum(n){ function s(n){
if(n == 0|| n ==1){ if(n == 1){
return 1; return 1;
} }
return sum(n-1) + sum(n-2); return s(n-1) * n;
} }
console.log(sum(2)) console.log(s(4));
求指数幂
//求幂
function s(n,w) {
if (w == 0) {
return 1;
}else {
return s(n,w-1) * n;
}
}
console.log(s(3,3))