1.反转字符串
解法一、
思路:从坐标的最大值减减
function b(str){
let res ='', //新建一个变量接受循环值
for(let i=str.length-1;i>=0;i--){ //根据length的最大值向前递减做循环,res接收排列
res+=str[i]
}
return res
}
b("hello") 得到 //olleh
解法二、
思路:对称比较换位置
function b(str){
let arr =str.split('');
let i =0, j=str.length-1;
// i+j=length-1 j=length-1-i 二者对应关系:对应的不是值,是length长度值
while(i<j){
[ arr[i],arr[j] ] =[ arr[j],arr[i] ];
//或者
//let temp =arr[i];
//arr[i]=arr[i];
//arr[j]=temp
i++;
j--;
}
return arr.join('');
}
b("hello") 得到 //olleh
解法三、
思路:es6的reverse方法
function b(str){
return str.split('').reverse().join('');
//reverse是数组方法,需要转数组 另字符串无法通过index转值
}
b("hello") 得到 //olleh
解法四、剥洋葱
function b(str){
if(!str){ //str.length==0
return ''; // 防止空字符
} else if(str.length==1){
return str;
}
let end = str[end] + b(str.slice(1,end)) + str[0] //采用递归的思想
}
b("hello") 得到 //olleh
2.n的阶乘
解法一、for循环
function a(res){
if(res===0){
return 1
}else if(
let num = 1;
for(let i = 2;i<= res ;i++){
num*=i
}
return num
)
}
a(3) // 得到6
解法二、递归
function b(num){
if(num===0){
return 1
}
return num*b(num-1)
}