列印1到最大的n位數

2021-07-02 22:05:15 字數 871 閱讀 2798

題目:輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位即999.

這個題目看著簡單,我們一般想到的是:

package stringchar;

public class printnumbermain

for (int j = 0; j < num; j++)

} public static void main(string args)

}

但是我們沒有考慮到當輸入的n很大時,就會溢位。也就是說我們需要考慮大數問題。這也是面試官設定的陷阱。

我們可以考慮用字串來模擬數字加分的解法,繞過陷阱才能拿到offer。

其**如下:

public void printtonumber2(int n) 

} public void printnumber(char num)

if (!isbeginning0)

} system.out.print("\t");

} public boolean increament(char num)

} else

} return isoverflow;

}

把問題轉換為數字排列的解法,遞迴讓**更簡潔:

public void printtonumber3(int n) 

} public void printnumberrecursive(char num, int n, int index)

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

}

列印1到最大的n位數

輸入數字n,按順序列印出1到最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。方法1 利用case語句使字元 char charplus char a if numchar len 0 判斷是否向高位移動,如果該為由9 0,則向高位移動 if flag numchar ...

列印1到最大的n位數

劍指offer用的是字串,還要苦逼的字串比較,看是否進製。直接用整型陣列來儲存。include include using namespace std 乙個int儲存幾位數 const int int num 2 每位數最大值,超過這個要進製 不包括最高位 const int int max 99 ...

列印1到最大的n位數

1.問題描述 輸入數字n,按順序列印出從1刀最大的n位數的十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位數999.來自 劍指offer 2.分析 對於這個問題,我們需要考慮大數。因此我們在字串上模擬加法運算。3.ntakeover代表進製,isnotoverflow代表有沒有溢位 是不是...