1.求和(1-100的求和)
function sum(n) {
if (n === 1) return 1;
return sum(n - 1) + n;
}
2.斐波拉契数列
1,1,2,3,5,8,13,21,34,55,89...求第 n 项 后一个的值等于前两个加起来
function sum(n) {
if (n === 1 || n===2) return 1;
return sum(n - 1) + sum(n - 2);
}
3.爬楼梯
有一个楼梯,你一次只能往上走一阶或者两阶。请编写函数 climbStairs,它接受一个整数 n 作为参数,表示这个楼梯有多少阶。请你返回一个整数,表示这个楼梯一共有多少种走法
不难发现这道题思想其实是斐波那契数列
function climbStairs(n) {
return n < 3 ? n : climbStairs(n - 1) + climbStairs(n - 2)
}
4.深拷贝
原理: clone(o) = new Object; 返回一个对象
function clone(o) {
var temp = {}
for (var key in o) {
if (typeof o[key] == 'object') {
temp[key] = clone(o[key])
} else {
temp[key] = o[key]
}
} return temp
}
5.字符串处理
回文字符串
1. //判断回文字符串
1. function palindrome(str) {
1. var reg = /[\W\_]/g;
1. var str0 = str.toLowerCase().replace(reg, "");
1. var str1 = str0.split("").reverse().join("");
1. return str0 === str1;
1. }
翻转字符串
function reverseString(str) {
return str.split("").reverse().join("");
}
字符串中出现最多次数的字符
function findMaxDuplicateChar(str) {
var cnt = {}, //用来记录所有的字符的出现频次
c = ''; //用来记录最大频次的字符
for (var i = 0; i < str.length; i++) {
var ci = str[i];
if (!cnt[ci]) {
cnt[ci] = 1;
} else {
cnt[ci]++;
}
if (c == '' || cnt[ci] > cnt[c]) {
c = ci;
}
}
console.log(cnt)
return c;
}
6.数组方法
数组去重
// 对比法
function uniqueArray(arr) {
var temp = [];
for (var i = 0; i < arr.length; i++) {
if (temp.indexOf(arr[i]) == -1) {
temp.push(arr[i]);
}
}
return temp;
// 利用数组的set方法去重
return Array.from(new Set(arr));