JavaScript算法練習:烏托邦樹

烏托邦樹.png

對於今天的算法,咱們要寫一個叫作 utopianTree 的函數,它只接受一個輸入:一個整數 njavascript

咱們有一棵烏托邦樹,每一年要經歷2個增加週期。在春季,高度增長一倍,在夏季,高度增長1(不管您要使用哪一種測量系統)。該函數的目的是輸出樹通過必定數量的生長週期後的高度。前端

若是咱們想知道樹在5個生長週期後的高度,請按如下方法計算樹的高度:java

let n = 5;

咱們的輸入 n 是一個變量,它保存了生長週期的數量,咱們從生長週期 0 開始計算樹的高度。git

在週期 0 處,樹的初始高度爲 1算法

在週期 1 時,樹的高度加倍,所以其高度如今爲 2segmentfault

在週期 2 中,樹的高度增長 1,樹的高度爲 3微信

在週期 3 中,樹的高度再次加倍,所以樹的高度如今爲 6前端工程師

在週期 4 時,樹的高度增長 1,樹的高度如今爲 7函數

在最後一週期中,樹的高度加倍,使樹的高度爲 14學習

該函數將輸出 14

在看咱們如何獲得答案時,咱們開始看到一種模式。若是週期數是奇數,則從週期 1 開始,樹的高度加倍;若是是偶數,則樹的高度僅增長1。

讓咱們將其轉換爲代碼,咱們建立變量:

let cycle = 1;
let height = 1;

咱們的週期(cycle)變量將幫助咱們在每一個生長週期(從1到 n)計數時跟蹤樹的高度。

height 變量將保存樹的高度,該函數將輸出此變量,咱們從1開始計數,由於那是樹的初始高度。

接下來,咱們使用while循環:

while (cycle <= n){
    if(cycle % 2 !== 0 ){
      height *= 2;
    }else{
      height++;
    }
    cycle++;
}

咱們但願while循環繼續循環直到 cycle 變量不大於輸入 n

在上面的示例中,咱們注意到,若是生長週期爲奇數,則樹的高度將加倍。所以,不管樹的當前高度是多少,咱們都將其乘以2。

若是生長週期是偶數,咱們將樹的高度增長1。

循環通過if語句後,咱們增長 cycle 變量,以便咱們能夠在下一個生長循環中測量樹的高度。

循環完成後,咱們返回height變量。

return height;

到此結束咱們的算法。這是完整的代碼:

function utopianTree(n) {
  let cycle = 1;
  let height = 1;
  
  while (cycle <= n){
    if(cycle % 2 !== 0 ){
      height *= 2;
    }else{
      height++;
    }
    cycle++;
  }
  
  return height;
}

原文:https://levelup.gitconnected....

翻譯:杜尼卜


若是對你有所啓發和幫助,能夠點個關注、收藏,也能夠留言討論,這是對做者的最大鼓勵。

做者簡介:Web前端工程師,全棧開發工程師、持續學習者。

如今關注《前端外文精選》微信公衆號,還送某網精品視頻課程網盤資料啊,準能爲你節省很多錢!

掃碼_搜索聯合傳播樣式-標準色版.png

相關文章
相關標籤/搜索