LintCode 用遞迴列印數字

2021-07-29 07:33:18 字數 809 閱讀 8935

用遞迴的方法找到從1到最大的n位整數。

樣例 給出n = 1, 返回[1,2,3,4,5,6,7,8,9].

給出n = 2, 返回[1,2,3,4,5,6,7,8,9,10,11,...,99].

挑戰 用遞迴完成,而非迴圈的方式。

方法一:迴圈輸出

最大的數為10^n -1

class solution 

for(int j=1; j< max; j++)

return ret;

}};

方法二:遞迴輸出(會溢位)

這種方法,最大值為多少,就遞迴多少層。當資料比較大時,導致棧溢位

class solution 

return print(max);

}vectorprint(int n)

return ret;

}};

方法三: 遞迴輸出(不溢位)

遞迴使得遞迴的深度最多為n。將1-10定為一層,10-100定為一層,那麼輸入n,最多就迴圈n層。

class solution

return print(1,n); //列印從1開始的n位數

}vectorprint(int i, int n){

if( n>=1 ){ //依次將1-9,10-99,100-999放入容器內

int max = i*10;

for(int j=i; j

lintcode 用遞迴列印數字

遞迴的方法找到從1到最大的n位整數。樣例給出n 1,返回 1,2,3,4,5,6,7,8,9 給出n 2,返回 1,2,3,4,5,6,7,8,9,10,11,99 注意用下面這種方式去遞迴其實很容易 recursion i 但是這種方式會耗費很多的遞迴空間,導致堆疊溢位。你能夠用其他的方式來遞迴使...

Lintcode 用遞迴列印數字

用遞迴的方法找到從1到最大的n位整數。注意事項 用下面這種方式去遞迴其實很容易 recursion i 但是這種方式會耗費很多的遞迴空間,導致堆疊溢位。你能夠用其他的方式來遞迴使得遞迴的深度最多只有 n 層麼?樣例 給出 n 1,返回 1,2,3,4,5,6,7,8,9 給出 n 2,返回 1,2,...

LintCode 371 用遞迴列印數字

用遞迴的方法找到從1到最大的n位整數。注意事項 用下面這種方式去遞迴其實很容易 recursion i 但是這種方式會耗費很多的遞迴空間,導致堆疊溢位。你能夠用其他的方式來遞迴使得遞迴的深度最多只有 n 層麼?樣例 給出n 1,返回 1,2,3,4,5,6,7,8,9 給出n 2,返回 1,2,3,...