輸出 到最大的N位數

2021-06-02 03:28:41 字數 669 閱讀 7341

題目:輸入數字n,按順序輸出從1最大的n位10進製數。比如輸入3,則輸出1、2、3一直到最大的3位數即999。

分析:這是一道很有意思的題目。看起來很簡單,其實裡面卻有不少的玄機。應聘者在解決這個問題的時候,最容易想到的方法是先求出最大的n位數是什麼,然後用乙個迴圈從1開始逐個輸出。很快,我們就能寫出如下**:

void print1tomaxofndigits_1(int n)

初看之下,好像沒有問題。但如果我們仔細分析這個問題,就能注意到這裡沒有規定n的範圍,當我們求最大的n位數的時候,是不是有可能用整型甚至長整型都會溢位?分析到這裡,我們很自然的就想到我們需要表達乙個大數,最常用的也是最容易實現的表達大數的方法是用字串或者整型陣列(當然不一定是最有效的)。

用遞迴可以比較簡短地實現: 

#include #include using namespace std ;

void output(char* number)

cout << "\t";

}void recuroutput(char* number, int n, int index)

for(int i = 0; i < 10; ++i)

}void printton(int n)

int main()

**:

輸出1到最大的N位數

from 演算法一 最直觀的演算法,求出最大的n位數是多少,然後乙個迴圈列印。cpp view plain copy void print1tomaxofndigits1 intn 演算法二 字串表示大數 當n很大時,演算法一可能會溢位,所以考慮大數問題一般用陣列或字串。用字串表達數字的時候,最直觀...

輸出1到最大的N位數

輸出1到最大的n位數 原文 演算法一 最直觀的演算法,求出最大的n位數是多少,然後乙個迴圈列印。cpp view plain copy void print1tomaxofndigits1 intn 演算法二 字串表示大數 當n很大時,演算法一可能會溢位,所以考慮大數問題一般用陣列或字串。用字串表達...

輸出1到最大的n位數

題目 輸入數字n,按順序列印出從1到最大的n位十進位制數。eg 輸入3,輸出1 2 3 一直到999。思路 n有可能是乙個很大的數,要考慮到大數問題。用陣列或字串表達大數。用字串表示數字的時候,最直觀的方法就是字串裡每乙個字元都是 0 到 9 之間的某乙個字元,用來表示數字中的一位。因為數字最大是n...