打印从1到最大的n位数(Golang)《剑指offer》


题目描述

题目:输入数字n,按顺序打印从1到最大的n位十进制数。比如输入3,则打印出1,2,3一直到最大的3位数999。

func Print1ToMaxOfDigits(n int) {
	if n <= 0 {
		return
	}

	number := make([]int, n)
	for i := 0; i < 10; i++ {
		number[0] = i
		print1ToMaxOfDigitsRecursively(number, n, 0)
	}
}

func print1ToMaxOfDigitsRecursively(number []int, length int, index int) {
	if index == length-1 {
		printNumber(number)
		return
	}

	for i := 0; i < 10; i++ {
		number[index+1] = i
		print1ToMaxOfDigitsRecursively(number, length, index+1)
	}
}

func printNumber(number []int) {
	var isBeginning0 = true
	length := len(number)
	for i := 0; i < length; i++ {
		if isBeginning0 && number[i] != 0 {
			isBeginning0 = false
		}

		if !isBeginning0 {
			fmt.Printf("%d", number[i])
			if i == length-1 {
				fmt.Println()
			}
		}
	}
}

Github: https://github.com/echaser/algorithm


文章作者: Jack Li
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jack Li !
评论
  目录