列印從1到最大的n位數

2021-10-25 09:36:01 字數 1429 閱讀 2077

首先這是乙個沒有限制n大小的題,所以不能拿普通的數字輸出,是乙個大數問題,要把字元輸出轉換為字串輸出。

兩種思路

第一種是字串(用char型別的陣列比較好改)為n位(不和c++一樣用/0標誌結束,物件中可以直接用length來檢視是否結束),然後前面空的為0,每次加1,輸出。直到加1後溢位則不再加1,退出迴圈。

//列印1到最大的n位數

public void printtomaxofdigits

(int n)

//宣告字元陣列,用來存放乙個大數

char number[

]= new char[n]

;for

(int i =

0; i < number.length;

++i)

while

(!incrementnumber

(number))}

//自加

private boolean incrementnumber

(char[

] number)

if(nsum >=10)

else

}else

}return isoverflow;

}//列印數字

private void printnumber

(char[

] number)

if(!isbeginning0)

} system.out.

println()

;

第二種思路是列印除0之外n位0到9的全排列,可以用遞迴實現,就是挨個設定所有位的值。迴圈為一位賦值1到10,遞迴來進入下一位

//列印1到最大的n位數的主方法

public void printtomaxofdigits

(int n)

char number[

]= new char[n]

;for

(int i =

0; i < number.length; i++)

for(int i =

0; i <10;

++i)

}//利用遞迴實現1到最大的n位數的全排列

public void printtomaxofndigitsrecursively

(char[

] number, int n, int index)

for(int i =

0; i <10;

++i)

}//輸出

private void printnumber

(char[

] number)

if(!isbeginning0)

} system.out.

println()

;

列印從1到最大的n位數

題目 輸入數字n,順序列印從1到最大n位的十進位制數,例如輸入3,列印1到999 includebool increment char number void printnumber char number void printtomaxofndigitsrecursively char numbe...

列印從1到最大的n位數

void print1tomaxofndigits int n 上面的 有個最嚴重的問題 沒有關注n的範圍 當輸入的n很大時,我們求最大的n位數用int或者long long都會溢位。也就是我們需要考慮大數問題。因為數字最大是n位,所以我們需要用乙個長度是n 1的字串 字串最後一位放 0 當實際的數...

列印從1到最大的n位數

題目 輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。思路 首先注意這是個大數問題,n很大的時候c 的int和long long都吃不消,所以數字的儲存要用字串 這裡我模擬了大數相加,只不過每次都是加1 另外要注意列印的問題,cout比較慢...