成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何快速將 '*' 重復 9 次?

NeverSayNever / 3378人閱讀

摘要:如果是將重復次,一下子就可以想到這種快速算法用代碼實現(xiàn)同樣的算法可用于次次次次但是如果是要求重復次呢這就需要調(diào)整一下上述的算法。

如果是將 "*" 重復 8 次,一下子就可以想到這種快速算法:

"*" + "*" => "**"

"**" + "**" => "****"

"****" + "****" => Bingo!

JavaScript 代碼實現(xiàn):

var n = 8;
var str = "*";
while ((n >>>= 1) > 0) {
  str += str;
}
console.log(str);

同樣的算法可用于 16 次、32 次、64 次、1024 次...

但是如果是要求重復 9呢?這就需要調(diào)整一下上述的算法。

先抽象出一個函數(shù) repeat: (str: string, n: number) => string:

repeat("*", 3) => "***"

repeat("ab", 1) => "ab"

repeat("abcd", 0) => ""

...

然后開始分析:

n 為偶數(shù)時:

repeat(str, n) <= repeat(str, n >>> 1) + repeat(str, n >>> 1)

比如:repeat("abc", 12) <= repeat("abc", 6) + repeat("abc", 6)

n 為奇數(shù)時,即 n - 1 為偶數(shù):

repeat(str, n) <= str + repeat(str, n - 1)

比如:repeat("*", 21) <= "*" + repeat("*", 20)

n1 時:repeat(str, 1) <= str

n0 時:repeat(str, 0) <= ""

JavaScript 代碼實現(xiàn):

function repeat(str/*:string*/, n/*:number*/) {
  if (n === 0) return "";
  if (n === 1) return str;
  // `n` 為奇數(shù)
  if (n % 2) return str + repeat(str, n - 1);

  // `n` 為偶數(shù),
  // 但是要把 `repeat(str, n >>> 1)` 緩存起來,
  // 以避免重復兩次計算
  return (str = repeat(str, n >>> 1)) + str;
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91988.html

相關(guān)文章

  • JS 中為啥 [&#039;1&#039;, &#039;7&#039;, &#039;11

    摘要:如果我們把非布爾值作為條件呢打開控制臺并運行上述代碼,會打印說明條件為真值。在中,真值指的是在布爾值上下文中轉(zhuǎn)換后的值為真的值。兩個能夠建立元素間一一對應(yīng)的集合稱為互相對等集合。 showImg(https://segmentfault.com/img/bVbtSvt?w=720&h=360); 為了保證可讀性,本文采用音譯而非直譯。 Javascript 一直是神奇的語言。 不相信我...

    yuanzhanghu 評論0 收藏0
  • [python] 初探&#039;函數(shù)式編程&#039;

    摘要:前言繼續(xù)向下看廖大教程,看到了函數(shù)式編程這一節(jié),當時是覺得沒啥用直接跳過了,這次準備要仔細看一遍了,并記錄下一些心得。 前言 繼續(xù)向下看廖大教程,看到了函數(shù)式編程這一節(jié),當時是覺得沒啥用直接跳過了,這次準備要仔細看一遍了,并記錄下一些心得。 函數(shù)式編程 上學期有上一門叫 人工智能 的課,老師強行要我們學了一個叫做 prolog 的語言,哇那感覺確實難受,思維方式完全和之前學過的不一樣,...

    xcc3641 評論0 收藏0
  • What&#039;s New in JavaScript

    摘要:在和中都保留了數(shù)組的強引用,所以在中簡單的清除變量內(nèi)存并沒有得到釋放,因為還存在引用計數(shù)。而在中,它的鍵是弱引用,不計入引用計數(shù)中,所以當被清除之后,數(shù)組會因為引用計數(shù)為而被回收掉。其實我們主要注意的引用是不計引用計數(shù)的,就好理解了。 showImg(https://segmentfault.com/img/remote/1460000019147368?w=900&h=383); 前...

    cgh1999520 評論0 收藏0
  • 精讀《What&#039;s new in javascript》

    摘要:舉例來說即便某個失敗了,也不會導致的發(fā)生,這樣在不在乎是否有項目失敗,只要拿到都結(jié)束的信號的場景很有用。對于則稍有不同只要有子項,就會完成,哪怕第一個了,而第二個了,也會,而對于,這種場景會直接。 1. 引言 本周精讀的內(nèi)容是:Google I/O 19。 2019 年 Google I/O 介紹了一些激動人心的 JS 新特性,這些特性有些已經(jīng)被主流瀏覽器實現(xiàn),并支持 polyfill...

    dabai 評論0 收藏0
  • 關(guān)于vue帶hash &#039;#/&#039; 微信分享后點開鏈接是首頁的問題

    摘要:在調(diào)用微信分享的時候如是這樣帶有的分享后,打開分享后的是關(guān)于這部分是微信加的。解決方法將分開將前后分開,微信就不會將拼接到之后得到的結(jié)果是,第一次打開還是會進入到,第二次打開才會進入到使用重定向在文件夾下,新建。內(nèi)容然后這樣就跳轉(zhuǎn)完成 在調(diào)用微信分享api的時候: let shareUrl = https://xxxx#/abc wx.onMenuShareTimeline({ ...

    calx 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<