トップ «前の日記(2016-03-26(Sat)) 最新 次の日記(2016-04-02(Sat))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2016-03-28(Mon) やや春らしい日差しの下、雨に追われて逃げ惑って

awkを書かないで一行だけ。

似たような再帰。
流石に改行は入ってるが、一応One Liner。

$ awk 'function rec(num) 
> { if(num==1) { return 1 } 
> else {return num * rec(num-1) }}
> BEGIN { print rec(6) }'
720

限界は再帰の回数より返す値の方のようだった。

$ awk 'function rec(num) 
> { if(num==1) { return 1 } 
> else {return num * rec(num-1) }}
> BEGIN { print rec(170) }'
7257415615307994045399635715589591467896184117242257803\
4055442117556932462152715774446149978680776400131841762\
7198582680159774324724797907799533661942998068579328576\
8053360886112149825437081356365699043287884614002788490\
6945304696617530078018969625637211046192423573487359868\
83814984039817295623520648167424
 
$ awk 'function rec(num) 
> { if(num==1) { return 1 } 
> else {return num * rec(num-1) }}
> BEGIN { print rec(171) }'
inf

掛け算でなく足し算(func(10) == 55)にしてやると もう少し多くの再帰ができた。

$ awk 'function plus(num) 
> { if(num==1) { return 1 } 
> else {return num + plus(num-1) }}
> BEGIN { print plus(10000000) }'
50000005000000

plus(100000000)しようとすると、約50秒後に 強制終了となった。


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。