1. 程式人生 > 其它 >冒泡和遞迴

冒泡和遞迴

技術標籤:前端js演算法

氣泡排序和遞迴

冒泡

基本思想

  1. 依次比較相鄰的兩個數,如果不符合排序規則,則調換兩個數的位置。這樣一遍比較下來,能夠保證最大(或最小)的數排在最後一位。
  2. 再對最後一位以外的陣列重複前面的過程,直至全部排序完成。

因為每一次對比後,最大或最小的數都會自己浮現出來,就跟吐泡泡一樣,氣泡排序因此得名

在這裡插入圖片描述

具體實現

  let arr = [5, 2, 10, 8, 6, 23, 14]
      //i => 迴圈的輪數
      for (let i = 0; i < arr.length - 1; i++) {
        //j => 選中元素的下標   這裡要根據外層for迴圈的i,逐漸減少內層 for迴圈的次數
for (let j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { //如果前一個數大於後一個數就交換兩數位置 [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]] } } } // 最終結果 console.log(arr)

遞迴

遞迴,就是在執行的過程中直接或間接呼叫自己。

三要素

用來做什麼(條件)
首先我們得清楚地明白你要拿這個函式用來做什麼

其次要知道構成遞迴需具備的條件:
子問題須與原始問題為同樣的事,且更為簡單;
不能無限制地呼叫本身,須有個出口,化簡為非遞迴狀況處>理。

結束條件
我們必須要找出遞迴的結束條件,不然的話,會一直呼叫自己,進入無底洞。也就是說,我們需要找出當引數為啥時,遞迴結束,之後直接把結果返回,請注意,這個時候我們必須能根據這個引數的值,能夠直接知道函式的結果是什麼。

等價關係式
我們要不斷縮小引數的範圍,縮小之後,我們可以通過一些輔助的變數或者操作,使原函式的結果不變。

簡單遞迴求和

function sum(x) {
//結束條件
if(x<1){
return 0;
}
 //等價關係式 
return x+sum(x-1); } console.log(sum(5)); => 輸出:15