遞歸:遞歸函數是在一個函數通過名字調用自身情況下構成的 /*function jiecheng(n){//n=5 if(n==1){//基點 return 1; }else{ return n*jiecheng(n-1); } }*/ //alert(jiecheng(100));//9.33262 ...
遞歸:遞歸函數是在一個函數通過名字調用自身情況下構成的
/*function jiecheng(n){//n=5
if(n==1){//基點
return 1;
}else{
return n*jiecheng(n-1);
}
}*/
//alert(jiecheng(100));//9.33262154439441e+157 10的157次方。
//2.利用遞歸求斐波那契數列的前20項
// 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,
/*function fb(n){//n:位置
if(n==1 || n==2){//基點
return 1;
}else{
return fb(n-1)+fb(n-2)
}
}
//alert(fb(8));
for(var i=1;i<=20;i++){
document.write(fb(i)+',');
}*/
//1.冒泡排序
//冒泡排序演算法的原理如下:
//比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
//對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
//針對所有的元素重覆以上的步驟,除了最後一個。
//持續每次對越來越少的元素重覆上面的步驟,直到沒有任何一對數字需要比較。
/*var arr=[9,30,4,89,75,456,2,7,-100,9];
var times=0;//次數
for(var i=0;i<arr.length-1;i++){//控制次數 -1:10個數字只需要兩兩比較9次。
for(var j=0;j<arr.length-i-1;j++){//-i:i迴圈一次,j迴圈到底,每一次i的迴圈都已經排好一個數字。
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
times++;
}
}
console.log(arr);
console.log(times);*/
//2.選擇排序
//選擇排序(Selection sort)是一種簡單直觀的排序演算法。
它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,
直到全部待排序的數據元素排完。
/*var arr=[9,300,4,890,7500,456,20,70,-100,-9];
for(var i=0;i<arr.length;i++){
var minindex=i;//假設最小值的下標
var minvalue=arr[minindex];//假設最小值
for(var j=i+1; j<arr.length;j++){
if(minvalue>arr[j]){
minvalue=arr[j];
minindex=j;
}
}
//如果上面的for迴圈完成,代表minindex就是最小值的下標。
if(minindex!=i){//如果minindex!=i說明找到了真正的最小值。否則就代表假設的剛好就是最小值。
var temp=arr[minindex]
arr[minindex]=arr[i];
arr[i]=temp;
}
}
console.log(arr);*/
//3.快速排序(去重)
//在數組中截取中間值,中間值可以任意獲取。--splice
//剩餘的數組項都和中間值進行比較,如果比中間值小,放置在一個數組中,比中間值大,放到另外一個數組中。
//分別對上面的兩個數組重覆上面的操作--遞歸
//最終利用concat進行拼接。輸出結果
/*var arr=[9,300,4,890,7500,456,20,70,-100,-9];
function quicksort(array){
if(array.length<=1){
return array;
}else{
var midindex=parseInt(array.length/2);//獲取中間索引
var midvalue=array.splice(midindex,1)[0];//獲取中間值
var left=[];
var right=[];
for(var i=0;i<array.length;i++){
if(array[i]<midvalue){
left.push(array[i]);
}else{
right.push(array[i]);
}
}
return quicksort(left).concat(midvalue,quicksort(right));
}
}
console.log(quicksort(arr));*/
//去重
indexOf去重
/*var arr=[9,301,4,8900,4,7500,4156,20,70,4156,-100,-9,9,9,4,8900,20];
var newarr=[];
for(var i=0;i<arr.length;i++){
if(newarr.indexOf(arr[i])==-1){
newarr.push(arr[i]);
}
}
console.log(arr);
console.log(newarr);*/
/*var arr=[9,301,4,8900,4,7500,4156,20,70,4156,-100,-9,9,9,4,8900,20];
var newarr=arr.filter(function(value,index,array){
return arr.indexOf(value)==index;//數組項的索引是否等於當前索引。
});*/
console.log(newarr);
var arr=[1,7,5,6,4,1,2,6];
function norepeat(arr){
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[j]==arr[i]){
arr.splice(i,1);
arr.length-1;
j--;
}
}
}return arr;
}console.log(norepeat(arr));