列印從1到最大的n位數

2021-10-03 15:44:47 字數 1062 閱讀 1466

題目:

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

思路:因為n可能會很大,所以不能直接求出最大值,然後for一遍。有兩種方法可以解決:一、字串模擬加法;二、遞迴

字串模擬加法要注意的是到最大值需要是停下來,可以採用乙個boolean變數。因為函式裡的引數是陣列,會改變陣列裡的值所以不用返回。

遞迴要注意的的遞迴的起始條件,這會影響到輸出的結果是否按順序輸出。遞迴是從第0位開始。

package 高質量的**;

public

class 列印從1到最大的n位數 */

digui

(number,0)

;}public

static

void

printnumber

(char

number)

if(benginindex==number.length)

return

;for

(int i = benginindex; i < number.length; i++

) system.out.

println()

;}public

static

boolean

add(

char

number)

if(i<0)

return

true;}

number[i]+=1

;return

false;}

//遞迴

public

static

void

digui

(char

number,

int index)

for(

int i=

0;i<

10;i++)}

public

static

void

main

(string[

] args)

}

列印從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比較慢...