精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

打印從1到最大的n位數(shù)

開發(fā) 測試
有一個數(shù)字n,我們需要按照順序輸出從1到最大的n位十進(jìn)制數(shù),例如:n = 3,則輸出1、2、3...一直到最大的3位數(shù)999。

本文轉(zhuǎn)載自微信公眾號「神奇的程序員」,作者神奇的程序員。轉(zhuǎn)載本文請聯(lián)系神奇的程序員公眾號。

前言

有一個數(shù)字n,我們需要按照順序輸出從1到最大的n位十進(jìn)制數(shù),例如:n = 3,則輸出1、2、3...一直到最大的3位數(shù)999。

本文將將帶著大家一起解決這個問題,分析解決思路與實現(xiàn)方法,歡迎各位感興趣的開發(fā)者閱讀本文。

循環(huán)解法

當(dāng)我們過一眼這個問題后,腦海中想到的第一個思路肯定是:

  • 先求出這個最大的n位數(shù)
  • 用一個循環(huán)從1開始逐個打印至最大的n位數(shù)

很輕松就能寫出如下所示的代碼:

export default class PrintMaxNumber {
// 通過遍歷獲取最大值
public traverseForMax(n: number): void {
let maxNumber = 1;
let i = 0;
while (i++ < n) {
// 每次對結(jié)果*10,得出最小的n+1位的值
maxNumber *= 10;
}
// 輸出1到最大值-1位置的值,就是n位數(shù)的最大值
for (let i = 1; i < maxNumber; i++) {
console.log(i);
}
}
}

這段代碼乍一看沒啥問題,當(dāng)n = 3的時候可以正常輸出1~999之間的所有值,但是題目中n并沒有規(guī)定具體范圍,當(dāng)n很大的時候,超出了js可以表示的最大范圍,代碼將無法運(yùn)行。

排列解法

上述思路無法解決大數(shù)問題,接下來我們換一種思路來考慮這個問題。如果我們在數(shù)字前面補(bǔ)0,就會發(fā)現(xiàn)n位所有十進(jìn)制數(shù)其實就是n個從0~9的全排列。也就是說,只要我們把數(shù)字的每一位都從0~9排列一遍,就得到了所有的十進(jìn)制數(shù)。

全排列使用遞歸的方式很容易表達(dá),數(shù)字的每一位都只可能是0~9中的一個數(shù),然后設(shè)置下一位。遞歸結(jié)束的條件就是我們已經(jīng)設(shè)置了數(shù)字的最后一位。

注意:對遞歸不了解的開發(fā)者,請移步我的另一篇文章:遞歸的理解與實現(xiàn)[1]

接下來,我們來看下實現(xiàn)思路:

  • 準(zhǔn)備一個數(shù)組用于描述數(shù)字的所有位數(shù)
  • 從0遍歷至9,進(jìn)入循環(huán)
  • 填充數(shù)字的最高位,即數(shù)組的0號元素
  • 調(diào)用遞歸函數(shù),填充數(shù)組其他位置的元素,即除最大位外的其他位
  • 遞歸函數(shù)的實現(xiàn)
  • 計算下一位,填充數(shù)組下一位的值。
  • 繼續(xù)執(zhí)行遞歸函數(shù)
  • 接受三個參數(shù):數(shù)字位數(shù)組、數(shù)字的總位數(shù)、當(dāng)前位
  • 基線條件:當(dāng)前位是最大位的前一位
  • 從0遍歷至9,進(jìn)入循環(huán):

我們舉個例子,通過一個圖來描述下上述思路的執(zhí)行過程,我們用n來描述所求位數(shù),當(dāng)n=3時,那么遞歸樹就如下所示:

  • A控制百位,使用遞歸從0排列至9
  • B控制十位與個位,使用遞歸從0排列至9

注意:A中的遍歷永遠(yuǎn)只關(guān)注最高位數(shù)字的排列賦值,B中的遍歷關(guān)注其它位數(shù)字的排列賦值。當(dāng)執(zhí)行棧中的B執(zhí)行完時,則代表其他位已經(jīng)排列到了9。此時A中的遍歷就會繼續(xù)執(zhí)行,修改最高位的值。重復(fù)上述流程,直至A中的遍歷結(jié)束,所有的數(shù)字也就排列完成了。

提取正確的數(shù)字

當(dāng)遞歸的基線條件滿足時,我們就需要將當(dāng)前數(shù)字位數(shù)組中的值打印出來,我們在存儲的時候給每一位數(shù)字的后面加多了一個0,我們打印時需要進(jìn)一步處理,取出有效值即可,實現(xiàn)思路如下:

  • 通過遍歷,取出數(shù)組中每一項字符串的第0號元素
  • 從取出的字符串中,從最高位開始遍歷找到第一個非0數(shù),將其存起來
  • 最后,輸出存儲的值即可。

實現(xiàn)代碼

思路有了,理論也可行,那么代碼就能輕松寫出來了,如下所示:

export default class PrintMaxNumber {
public maxNumberToStr(n: number): void {
if (n <= 0) return;
const numberStr: string[] = [];
// 控制數(shù)字最高位的排列(0 ~ 9)
for (let i = 0; i < 10; i++) {
numberStr[0] = i + "0";
this.printToMaxRecursively(numberStr, n, 0);
}
}

/**
* 遞歸獲取最大值
* @param numStr 數(shù)字位數(shù)組
* @param length 數(shù)字位數(shù)
* @param index 當(dāng)前位
* @private
*/
private printToMaxRecursively(
numStr: string[],
length: number,
index: number
): void {
if (index === length - 1) {
// 打印
PrintMaxNumber.printNumber(numStr);
return;
}
// 控制數(shù)字其他位的排列(0 ~ 9
for (let i = 0; i < 10; i++) {
const nextIndex = index + 1;
numStr[nextIndex] = i + "0";
this.printToMaxRecursively(numStr, length, nextIndex);
}
}

/**
* 輸出數(shù)字位數(shù)組中的有效數(shù)字
* @param numStr
* @private
*/
private static printNumber(numStr: string[]): void {
const nLength = numStr.length;
let remove0Val = "";

// 篩選除去多余0后的值
// 假設(shè)此時的值是3位數(shù),那么對應(yīng)的數(shù)組就為["00","00","10"], 數(shù)組每一項值的第0位才是我們需要的值
for (let i = 0; i < nLength; i++) {
const strVal = numStr[i];
// 取數(shù)組每一項的第0位
remove0Val += strVal[0];
}

let finalVal = "";
// 是否從0開始
let isBeginning0 = true;
// 篩選出第一個非0值的字符索引
for (let i = 0; i < remove0Val.length; i++) {
// 從0開始的狀態(tài)為true且當(dāng)前字符不為0
if (isBeginning0 && remove0Val[i] !== "0") {
// 表示我們已找到第一個非0數(shù),修改狀態(tài)
isBeginning0 = false;
}

// 當(dāng)前位的數(shù)非0,將其存起來
if (!isBeginning0) {
finalVal += remove0Val[i];
}
}
if (finalVal !== "") {
console.log(finalVal);
}
}
}

測試用例

接下來,我們來測試下當(dāng)n = 3時,上述代碼能否正常運(yùn)行。

import PrintMaxNumber from "../PrintMaxNumber.ts";

const printNumber = new PrintMaxNumber();
printNumber.maxNumberToStr(3);

運(yùn)行結(jié)果如下所示,符合預(yù)期。

image-20220209011016743

示例代碼

本文所列舉的完整示例代碼請移步:

  • PrintMaxNumber.ts[2]
  • printMaxNumber-test.ts[3]

寫在最后

至此,文章就分享完畢了。

我是神奇的程序員,一位前端開發(fā)工程師。

參考資料

[1]遞歸的理解與實現(xiàn): https://juejin.cn/post/6844904197612109838

[2]PrintMaxNumber.ts: https://github.com/likaia/algorithm-practice/blob/3e998c85e40f37101e8d47a5eb5a97eb88e6a21d/src/PrintMaxNumber.ts

[3]printMaxNumber-test.ts: https://github.com/likaia/algorithm-practice/blob/3e998c85e40f37101e8d47a5eb5a97eb88e6a21d/src/test-case/printMaxNumber-test.ts

[4]個人網(wǎng)站: https://www.kaisir.cn/


責(zé)任編輯:武曉燕 來源: 神奇的程序員
相關(guān)推薦

2022-05-09 08:35:43

面試產(chǎn)品互聯(lián)網(wǎng)

2018-04-11 16:52:44

2017-11-01 17:27:18

數(shù)據(jù)中心

2018-07-30 09:00:49

技術(shù)管理實踐

2019-09-09 16:33:10

華為

2021-06-29 17:20:16

數(shù)據(jù)中臺用友iuap

2023-05-29 15:20:21

5G工業(yè)互聯(lián)網(wǎng)

2016-11-28 16:23:23

戴爾

2021-05-28 09:01:34

5G5G網(wǎng)絡(luò)5G終端

2020-04-14 10:38:33

華為服務(wù)政企

2018-09-28 16:01:38

SLCQLCSSD

2023-04-17 18:50:03

2016-06-16 19:21:59

阿里云云服務(wù)器資源編排

2023-03-19 17:36:38

2023-03-22 11:41:56

2022-06-21 10:10:14

HTTP協(xié)議TCP

2023-03-06 11:35:55

經(jīng)營分析體系

2021-03-10 09:21:00

Spring開源框架Spring基礎(chǔ)知識

2021-07-01 07:03:32

開發(fā)Webpack代碼
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲综合成人在线视频| 国产精品影视在线| 亚洲一区www| 99re6在线观看| 欧美xxxx视频| 91小视频在线| 国产欧美在线看| 久久久久久久久99| 久草精品在线| 日韩视频一区在线观看| 男人操女人逼免费视频| 国产一级在线| 国产福利不卡视频| 国产精品爱久久久久久久| 免费国产羞羞网站美图| 青青久久av| 91精品午夜视频| 国产极品粉嫩福利姬萌白酱| 黄色视屏免费在线观看| 99这里只有精品| 成人黄色免费看| 天堂а√在线中文在线新版| 天天做天天爱天天爽综合网| 日韩精品在线电影| 午夜免费一级片| 免费观看一级欧美片| 亚洲色图第一区| 欧美日韩一区二区三区在线观看免| 国产女人爽到高潮a毛片| 午夜在线视频观看日韩17c| 欧美老女人在线视频| 国产精品成人在线视频| 日韩有码一区| 精品裸体舞一区二区三区| 五月天av在线播放| 中文字幕在线官网| 亚洲一区二区在线观看视频 | 久久99久久久久久久噜噜| 免费黄色在线视频| 国产成人aa在线观看网站站| 4438成人网| www.99在线| 最新日韩三级| 色中色一区二区| 日本免费黄视频| 91高清视频在线观看| 一区二区免费在线播放| 国产人妻互换一区二区| 久操视频在线播放| 中文字幕在线观看不卡视频| 视频一区免费观看| 国产高清美女一级毛片久久| 久久久影院官网| 久久久水蜜桃| 青青草在线免费视频| 99在线精品视频| 国产一区视频观看| 人妻一区二区三区四区| 成人做爰69片免费看网站| 97人摸人人澡人人人超一碰| 99国产精品久久久久99打野战| 精品一区二区三区av| 国产日韩欧美中文| 国产农村妇女毛片精品久久| 国内久久精品视频| 亚洲iv一区二区三区| 国产乱码精品一区二三区蜜臂| 久久精品国产网站| 成人激情视频在线播放| 99热这里是精品| 成人精品免费视频| 国产亚洲一区在线播放| 亚洲人妻一区二区| 国产午夜精品美女毛片视频| 色狠狠久久av五月综合| 日本三级在线播放完整版| 亚洲丝袜另类动漫二区| 日韩一级特黄毛片| 精品丝袜在线| 欧美性xxxxx极品少妇| 亚洲天堂国产视频| 91麻豆精品激情在线观看最新| 亚洲国产小视频| 色哟哟精品观看| 四季av一区二区三区免费观看| 欧美裸体xxxx极品少妇| 91精品国产乱码久久久张津瑜 | 亚洲欧美另类小说| 国产一线二线三线女| 中文字幕人成乱码在线观看| 欧美色精品在线视频| 奇米777在线视频| 日韩av三区| 爱福利视频一区| 91蜜桃视频在线观看| 日本中文字幕一区| 99r国产精品视频| 九色网友自拍视频手机在线| 18成人在线观看| 日韩国产一级片| 91久久久久久白丝白浆欲热蜜臀| 欧美一区二区久久| 国产国语性生话播放| 水蜜桃久久夜色精品一区| 亚州欧美日韩中文视频| 中文字幕视频二区| www.激情成人| 99re99热| 欧美××××黑人××性爽| 日韩欧美一二三四区| 成年人免费观看视频网站| 影音先锋日韩在线| 国产精品久久婷婷六月丁香| 亚洲国产综合网| 亚洲国产精品高清| 少妇无码av无码专区在线观看| 成人精品国产亚洲| 亚洲精品久久视频| 青娱乐国产盛宴| 人妖欧美一区二区| 久久久www免费人成黑人精品| 毛片在线不卡| 欧美在线影院一区二区| bl动漫在线观看| 欧美1区2区3区| 国产精品第100页| 日韩三级电影网| 亚洲国产日韩a在线播放性色| 777视频在线| 免费看日本一区二区| 亚州国产精品久久久| 精品黑人一区二区三区国语馆| 欧美高清一级片在线观看| 色综合av综合无码综合网站| 视频二区欧美毛片免费观看| 主播福利视频一区| 日韩精品一区不卡| 久久久久久久久伊人| 91成人在线观看喷潮教学| 91精品入口| 欧美另类69精品久久久久9999| 亚洲一区二区天堂| 国产欧美一区二区在线| 欧美视频免费播放| 亚洲色图美女| 国产99久久精品一区二区 夜夜躁日日躁 | 狠狠v欧美ⅴ日韩v亚洲v大胸| 亚洲成人动漫精品| 免费观看污网站| 午夜日韩激情| 亚洲在线视频福利| 超鹏97在线| 日韩一二三四区| 成人免费毛片东京热| 国产精品白丝av| 加勒比海盗1在线观看免费国语版| 国产成人精选| 久久精品视频在线观看| 国产孕妇孕交大片孕| 亚洲日本va午夜在线影院| 中文字幕第一页在线视频| 水蜜桃精品av一区二区| 亚洲精品日韩激情在线电影| 中文字幕伦理免费在线视频 | 亚洲综合在线第一页| 中文写幕一区二区三区免费观成熟| 女人天堂亚洲aⅴ在线观看| 99久久无色码| 96av在线| 亚洲图片制服诱惑| 一区二区视频免费| 一区二区三区四区视频精品免费 | 97视频在线免费| 天堂俺去俺来也www久久婷婷| 538国产精品一区二区免费视频| 欧美偷拍视频| 欧美无乱码久久久免费午夜一区 | 日本免费一区二区三区视频观看 | 欧美xxxx14xxxxx性爽| 精品国产av一区二区三区| 亚洲一区二区三区精品在线| 添女人荫蒂视频| 久久最新视频| 国产高清免费在线| 福利电影一区| 国产精品video| 毛片激情在线观看| 日韩av在线导航| 中文字幕精品一区二| 一区二区三区日韩欧美| 黑人巨大精品欧美| 黑人精品欧美一区二区蜜桃| 国产3p露脸普通话对白| 欧美亚洲国产一区| av色综合网| 日本а中文在线天堂| 日韩视频―中文字幕| 粉嫩av一区二区夜夜嗨| 色偷偷一区二区三区| h色网站在线观看| av一区二区三区在线| 日本人视频jizz页码69| 国产伊人精品| 国产精品精品软件男同| 国产成人一级电影| 国产男女激情视频| 国产一区视频在线观看免费| 视频一区视频二区视频| 农村少妇一区二区三区四区五区| 国产女精品视频网站免费| 嗯啊主人调教在线播放视频| 日韩中文字幕免费视频| 手机看片福利在线观看| 欧美一区二区女人| 中文资源在线播放| 欧美日韩国产丝袜美女| 麻豆changesxxx国产| 中文字幕的久久| jizz欧美性20| 丁香亚洲综合激情啪啪综合| 一本色道久久亚洲综合精品蜜桃| 国产精品普通话对白| 日本丰满大乳奶| 成人精品影视| 欧美精彩一区二区三区| 国产精品tv| 91青青草免费观看| 日韩欧乱色一区二区三区在线| 琪琪亚洲精品午夜在线| а√天堂8资源中文在线| 中文字幕久热精品在线视频 | 日本不卡一区二区| 天堂а√在线中文在线| 久久av免费| 裸模一区二区三区免费| 琪琪久久久久日韩精品| 大波视频国产精品久久| 国产在线不卡一区二区三区| 国产精品主播视频| 国产精品久久久久久久久久齐齐| 日本国产高清不卡| a欧美人片人妖| 91爱视频在线| 华人av在线| 国外视频精品毛片| 91资源在线观看| 欧美xxxx综合视频| 久久不射影院| 欧美激情免费观看| 黄网在线免费看| 欧美丰满少妇xxxxx做受| 欧美寡妇性猛交xxx免费| 欧美精品午夜视频| 中日韩高清电影网| 欧美国产第一页| 免费毛片在线看片免费丝瓜视频| 欧美伦理91i| www在线看| 97超级碰碰人国产在线观看| 免费h在线看| 国产成人在线一区| 日韩三区免费| 91精品国产综合久久香蕉922| 日本亚洲欧洲无免费码在线| 91久久夜色精品国产网站| 成人污版视频| av噜噜色噜噜久久| 日韩欧美国产大片| 日韩精品av一区二区三区| 大片网站久久| 少妇熟女一区二区| 黑人一区二区三区四区五区| 国产69精品久久久久999小说| 亚洲男女自偷自拍| 久久婷五月综合| 国产一区二区三区蝌蚪| 性感美女一区二区三区| 91在线国内视频| 日韩av片在线免费观看| 亚洲欧美另类小说视频| 久久精品久久精品久久| 色哟哟一区二区| 96亚洲精品久久久蜜桃| 日韩欧美黄色影院| 欧美婷婷久久五月精品三区| 久久精品99久久久香蕉| 蜜乳av一区| 日韩免费在线视频| 久久一级大片| 欧美精品一区二区三区在线四季| 日韩成人a**站| 欧美视频免费看欧美视频| 日本一区中文字幕| 91精产国品一二三| www精品美女久久久tv| chinese全程对白| 精品福利一区二区| 国产原创中文av| 亚洲欧美自拍一区| caoporn97在线视频| 欧美与黑人午夜性猛交久久久| 久久爱.com| 国产欧美在线一区二区| 久久影院100000精品| 日韩av高清在线看片| 久久精品国产亚洲a| 久久精品综合视频| 亚洲免费在线观看视频| 久久永久免费视频| 欧美大片在线观看一区| 92国产在线视频| 456亚洲影院| 日韩视频1区| 亚洲欧洲日韩精品| 欧美综合国产| 国产国语老龄妇女a片| 亚洲手机成人高清视频| 亚洲图片欧美日韩| 亚洲第一av在线| 中文字幕在线三区| 成人看片人aa| 欧洲福利电影| 黄www在线观看| 成人久久久精品乱码一区二区三区 | 亚洲乱亚洲乱妇无码| 欧美卡一卡二| 成人精品视频99在线观看免费| 久久不卡国产精品一区二区| 精品久久久久久无码中文野结衣| 极品少妇xxxx精品少妇偷拍| 人妻av无码一区二区三区| 亚洲高清免费视频| 精品人妻伦一二三区久久| 久久精品人人爽| 久久av影院| 日韩欧美99| 日韩激情一二三区| 91视频在线网站| 欧美性xxxx| 精品乱码一区二区三四区视频| 欧美亚洲另类制服自拍| 欧美电影在线观看完整版| 91免费黄视频| 成人午夜视频免费看| 久久久久黄色片| 日韩久久久久久| 日韩av官网| 92福利视频午夜1000合集在线观看| 天天天综合网| 午夜免费福利网站| 亚洲精品亚洲人成人网在线播放| 国产手机av在线| 欧美xxxx做受欧美.88| 精品网站999| www.亚洲成人网| gogogo免费视频观看亚洲一| 日本污视频在线观看| 日韩国产精品视频| 一级毛片久久久| 日韩欧美精品一区二区| 日韩av二区在线播放| 国产精品18在线| 91麻豆精品国产综合久久久久久| 国产激情在线视频| 91视频在线免费观看| 亚洲狠狠婷婷| 在线不卡av电影| 在线播放中文一区| 特级毛片在线| 国产尤物91| 日韩成人精品在线观看| 亚洲区一区二区三| 精品日韩成人av| 345成人影院| 这里只有精品66| 国产成人精品免费一区二区| 国产精品黄色网| 一区二区三区精品99久久 | 午夜在线视频| 亚洲自拍偷拍色片视频| 在线看片欧美| 精品无码国产污污污免费网站| 欧美日韩国产小视频| 欧美日韩色网| 久久亚洲一区二区| 寂寞少妇一区二区三区| 免费一级特黄特色大片| 亚洲人成电影在线播放| 成人精品视频在线观看| 国产精品无码一区二区在线| 国产精品无圣光一区二区| 亚洲经典一区二区三区| 91成人福利在线| 希岛爱理一区二区三区| free性中国hd国语露脸| 欧美人妇做爰xxxⅹ性高电影| 久久电影网站| 亚洲精品久久区二区三区蜜桃臀| 成人做爰69片免费看网站| 亚洲视屏在线观看|