剑指Offer 17. 打印从1到最大的n位数

发布时间 2023-08-26 16:33:55作者: 小星code

题目链接: 剑指Offer 17. 打印从1到最大的n位数

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

解法思路:
利用上题中的代码,快速计算出10^n 的值,然后依次将结果加到ans

代码:

func printNumbers(n int) []int {
    var  ans []int
    max := pow(n)
    for i := 1; i < max; i ++{
        ans = append(ans,i)
    }
    return ans
}
func pow(n int)int{
    if n == 0 {
        return 1
    }
    if n == 1 {
        return 10
    } 
    sum := pow(n/2)

    if n %2 == 1{
        return sum * sum *10
    }
    return sum * sum
}