精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

亚州精品国产精品乱码不99按摩| 欧美a在线视频| 在线免费观看一区二区| 亚洲情侣在线| 亚洲第一中文字幕在线观看| 大肉大捧一进一出好爽动态图| av电影在线网| 成人三级伦理片| 国产精品久久久91| 久久精品国产av一区二区三区| 久久最新网址| 日韩精品最新网址| 一本久道综合色婷婷五月| caoporn免费在线| 国产日韩欧美不卡| 国产精品免费观看高清| 亚洲视频久久久| 99视频在线播放| 一本一本大道香蕉久在线精品| 欧美高清性xxxxhd| 国产剧情精品在线| 久久综合图片| 久久99精品久久久久久噜噜| 爱爱免费小视频| 日韩免费一级| 欧美色图免费看| 精品国产三级电影在线观看| 成人性视频欧美一区二区三区| 在线免费观看的av| 亚洲国产精品高清| 精品亚洲一区二区三区四区五区高| 91超薄丝袜肉丝一区二区| 国产精品夜夜夜| 久久久久久欧美| 90岁老太婆乱淫| 内射后入在线观看一区| 蜜臀精品一区二区三区在线观看 | 性孕妇free特大另类| 亚洲日产av中文字幕| 欧美乱熟臀69xxxxxx| 激情六月丁香婷婷| gogo高清在线播放免费| 一区二区高清免费观看影视大全 | 免费黄色一级网站| av资源一区| 一区二区三区中文字幕电影 | 中文字幕在线三区| 最新国产精品久久精品| 亚洲v国产v| 成年人视频在线看| 中文字幕欧美日韩一区| 日韩欧美视频一区二区三区四区| 日本韩国精品一区二区| 久久综合九色综合欧美亚洲| 久久亚洲免费| 你懂的好爽在线观看| 久久久国产精华| 日韩欧美亚洲在线| 国产乱理伦片a级在线观看| 久久精品视频免费观看| 日本不卡在线观看| 番号集在线观看| 欧美经典一区二区三区| 亚洲欧洲精品一区| 毛片在线看片| 亚洲精品免费视频| 久久人人爽人人爽人人av| 国产激情第一页| 日日夜夜亚洲| 欧美群妇大交群中文字幕| 香港日本韩国三级网站| 久久精品国产福利| 欧美一级生活片| 国产精品偷伦视频免费观看了| 亚洲一区二区三区日本久久九| 日韩精品资源二区在线| 欧美激情 亚洲| 亚洲69av| 日韩在线视频观看| 青青草手机在线观看| 伊人成人网在线看| 日韩69视频在线观看| 一级黄色大片免费| 深夜福利一区二区| 丰满少妇在线观看| 亚洲精品一区av| 欧美刺激脚交jootjob| 欧美夫妇交换xxx| 九一成人免费视频| 伦理中文字幕亚洲| www日韩精品| 欧美精品18| 欧美日韩dvd在线观看| 国产日韩欧美久久| 亚洲国产精品免费视频| 亚洲成人999| 国产一级淫片久久久片a级| 欧美精品日本| 国产成人精品视频在线| 五月天男人天堂| 日本片在线观看| 一本大道久久a久久精品综合| 天天综合天天添夜夜添狠狠添| 国产成人澳门| 最近2019中文字幕大全第二页| 久久久无码精品亚洲国产| 久久婷婷一区| 高清不卡日本v二区在线| 第一视频专区在线| 亚洲午夜一区二区三区| 第四色婷婷基地| 日韩精品免费一区二区夜夜嗨| 日韩在线视频国产| 国产精品视频免费播放| 激情深爱一区二区| 日本成人黄色| 少妇视频在线观看| 欧美成人欧美edvon| 大胸美女被爆操| 国产日韩高清一区二区三区在线| 成人免费xxxxx在线观看| 免费一级毛片在线观看| 亚洲国产精品一区二区尤物区| 亚洲36d大奶网| 九一精品国产| 国产69精品久久久久久| www.五月天激情| 亚洲欧洲av一区二区三区久久| 日本精品一区二区三区四区| 97超碰成人| 精品国偷自产在线视频99| 91视频在线视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 台湾佬中文娱乐网欧美电影| 日韩亚洲欧美成人一区| 情侣偷拍对白清晰饥渴难耐| 日韩av二区在线播放| 欧美精品人人做人人爱视频| 超碰在线99| 亚洲的天堂在线中文字幕| 欧美成欧美va| 高清在线成人网| 亚洲爆乳无码精品aaa片蜜桃| www久久久| 俺去了亚洲欧美日韩| 天天免费亚洲黑人免费| av在线不卡网| 亚洲欧洲精品一区二区| 日本成人片在线| 亚洲欧洲第一视频| 手机看片久久久| 久久久99精品久久| 熟妇人妻va精品中文字幕| 久久91麻豆精品一区| 欧美精品18videos性欧美| 白白色免费视频| 亚洲在线日韩| 欧美久久久久久| 日韩成人高清| 色综合伊人色综合网| 亚洲 小说区 图片区| 国产精品欧美久久久久无广告| 97精品国产91久久久久久| 在线视频免费观看一区| 中文字幕欧美一| 看看黄色一级片| 欧美1区视频| 国产日韩精品久久| 欧美日韩国产观看视频| 亚洲美女又黄又爽在线观看| 日韩欧美国产另类| 国产精品国产三级国产| 国产高清av片| 亚洲精品欧美| 奇米视频888战线精品播放| 成人国产在线| 欧美精品日韩三级| 无码国产精品高潮久久99| 日韩欧美国产高清91| 国产免费嫩草影院| 国产寡妇亲子伦一区二区| 日韩欧美一区三区| 日韩成人激情| 粉嫩av一区二区三区免费观看| 最近高清中文在线字幕在线观看1| 亚洲视频777| 精品人妻av一区二区三区| 五月天丁香久久| 婷婷综合五月天| 久在线观看视频| 精品精品99| 亚洲字幕一区二区| 色偷偷色偷偷色偷偷在线视频| 国产亚洲欧洲高清一区| 99国产精品一区二区三区| 午夜精品福利一区二区三区蜜桃| 国产精品久久久视频| 国产成人av一区二区三区在线 | 天堂av在线一区| 中文字幕在线观看一区二区三区| 高清一区二区三区| 国产精品伦子伦免费视频| 欧美韩日亚洲| 欲色天天网综合久久| www.热久久| 欧美日韩精品一区二区三区| 日韩欧美一区二区一幕| 国产精品入口麻豆九色| 青青青国产在线视频| 国产人成网在线播放va免费| 亚洲高清不卡av| 夜夜嗨aⅴ一区二区三区| 亚洲电影激情视频网站| 日本伦理一区二区三区| caoporn国产精品| 在线免费看污网站| 丝袜美腿亚洲一区| 亚洲大黄网站| 一区二区三区视频免费在线观看| 97人妻精品一区二区三区| 婷婷中文字幕一区三区| 国产午夜手机精彩视频| 国产亚洲成aⅴ人片在线观看| 国产av一区二区三区传媒| 久久精品国内一区二区三区| 欧美一级片免费在线| 日本最黄一级片免费在线| 亚洲美腿欧美激情另类| 蜜臀久久久久久999| 欧美一二三区精品| 91福利在线观看视频| 欧美羞羞免费网站| 一本久道久久综合| 国产免费一区二区三区免费视频| 欧美性猛交丰臀xxxxx网站| 国产亚洲精品久久777777| 亚洲美女区一区| 国产精品 欧美激情| 中文字幕一区日韩精品欧美| 老头老太做爰xxx视频| 久久久久久久久久电影| 六月婷婷七月丁香| 久久综合九色综合欧美98| 女~淫辱の触手3d动漫| 91论坛在线播放| www.色多多| 2020国产精品久久精品美国| 一本色道综合久久欧美日韩精品| 99在线精品一区二区三区| 日本免费福利视频| 91视频com| 色无极影院亚洲| 欧美经典一区二区| 国产又色又爽又高潮免费| ...中文天堂在线一区| 欧美激情精品久久久久久免费 | 亚洲专区免费| 欧美网站免费观看| 久久精品30| 超碰在线97免费| 久久99精品久久久久久动态图| 国产福利在线免费| 国产一区福利在线| 精品人妻一区二区乱码| 成人中文字幕在线| 久久人人爽人人爽人人片| 久久奇米777| 久久精品色妇熟妇丰满人妻| 亚洲欧美另类小说| 久草成人在线视频| 第一福利永久视频精品| 中文天堂在线资源| 91精品国产综合久久久蜜臀粉嫩| 精品国自产拍在线观看| 亚洲电影成人av99爱色| 久久精品蜜桃| 久久人体大胆视频| www.51av欧美视频| 国产激情视频一区| 精品一区二区三区免费看| 国产亚洲一区在线播放| 精品久久美女| 久久亚洲国产成人精品无码区| 精品99re| 91久久综合亚洲鲁鲁五月天| 91在线一区| 久久精品99久久| 999精品视频| 亚洲一区二区av在线| 99久久99精品| 99久久婷婷国产综合精品电影 | 在线小视频你懂的| www国产亚洲精品久久麻豆| 午夜黄色福利视频| 亚洲一区影音先锋| 波多野结衣电车痴汉| 欧美一区二区黄| 韩国中文免费在线视频| 日本一区二区三区四区| 免费人成又黄又爽又色| 亚洲日韩欧美一区二区在线| www.国产色| 91精品国产综合久久久久久久久久 | 欧美亚洲综合久久| 国产小视频免费观看| 色偷偷噜噜噜亚洲男人| 欧美freesex黑人又粗又大| 成人免费在线视频网站| 亚洲三级网页| wwwwww欧美| 久久99精品视频| 99久久人妻无码精品系列| 一区二区三区在线看| 亚洲熟妇无码久久精品| 亚洲国产成人爱av在线播放| aa在线视频| 国产欧美精品va在线观看| 偷拍亚洲色图| 国产精品无码人妻一区二区在线| 激情欧美一区二区三区在线观看| 欧美丰满老妇熟乱xxxxyyy| 欧美日韩在线视频首页| 亚洲欧美激情国产综合久久久| 日韩亚洲欧美成人| 成人av集中营| 日韩欧美三级一区二区| 老鸭窝亚洲一区二区三区| 国产激情视频网站| 亚洲成人一区二区在线观看| 国产特级黄色片| 免费不卡欧美自拍视频| 亚洲爽爆av| 在线国产99| 精品一区在线看| 国精产品视频一二二区| 欧美午夜精品久久久久久超碰| 欧洲毛片在线| 人人爽久久涩噜噜噜网站| 亚州av一区| 欧美极品欧美精品欧美图片| 99国产精品久久久久久久久久| xxxxxx国产| 亚洲第一在线视频| 日韩欧美精品一区二区三区| 国产在线精品一区二区中文 | 欧美激情精品久久久久久小说| 国产又黄又粗又长| 欧美一区二区大片| av在线下载| 99中文字幕| 亚洲第一区色| 成人精品在线观看视频| 色狠狠桃花综合| 你懂的在线免费观看| 国产成人精品日本亚洲| 青青草91久久久久久久久| 激情综合网俺也去| 中文字幕日本乱码精品影院| 国产老妇伦国产熟女老妇视频| 久久99热精品| 精品精品国产三级a∨在线| 99热自拍偷拍| 久久久久久99精品| 午夜dv内射一区二区| 久久品道一品道久久精品| 欧美成人精品网站| 久久久91精品| 另类尿喷潮videofree| 欧美黄网站在线观看| 国产欧美中文在线| 国产精品久久久久久久免费| 欧美精品一本久久男人的天堂| 凹凸成人在线| 午夜视频在线瓜伦| 国产精品欧美极品| 91最新地址在线播放| 日韩欧美不卡视频| 亚洲美女激情视频| 久久天堂影院| 欧美黄网在线观看| 97se亚洲国产综合在线| 国产精品午夜一区二区| 久久久久999| 亚洲欧美成人vr| 99日在线视频| 黑人巨大精品欧美一区免费视频 | 国内精品久久久久影院薰衣草| 永久免费看黄网站| 日韩精品视频免费专区在线播放| 久久亚洲国产精品尤物| 丰满少妇大力进入| 国产精品久久久久久久久果冻传媒 | 色操视频在线| 欧美日韩电影一区二区| 国产美女主播视频一区| 狠狠人妻久久久久久| 欧美另类第一页| 精品在线99| 麻豆精品国产传媒| 欧美亚洲免费在线一区|