2007/08/05
PowerShellの再帰呼び出しは100まで
今日まっちゃ139勉強会でインスパイアされてPowerShellでは再帰呼び出しが何回できるのか?ということを調べたら100回でした。どっかに説明があった気もする…。以下、2分で書いた検証コード。(2分もかけるなって?w)
$b=1;function a(){$b++;$b;a};a
実行結果
2 3 4 5 6 7 8 9 略 94 95 96 97 98 99 呼び出しの深さのオーバーフローのため、スクリプトが失敗しました。呼び出しの深さ が 101 に達しましたが、最大値は 100 です。
ちなみにVBScriptやJScriptは環境依存しますがメモリ容量が足りないというエラーで最後は終了しますがだいたい1000~2000階層くらいまでいけるっぽいです。あれ、再帰呼び出ししてるときにスタック領域が不足しましたってエラーを見ることがあるんだけどどうやったら出るんだっけ?
b=1 a Sub a() b=1+b wscript.stdout.writeline b call a() End Sub
var b=1; a(); function a(){ b++; WScript.StdOut.WriteLine(b); c=a(); }
おまけ。やはりインスパイアされてfizz buzz問題をPowerShellで書いてみた。これ5分くらいかかったので私はだめかもしれません。変数1個でいいですね、よく考えると。てんぱってるとだめみたいです。
1..100|%{$a="";$b=$false;if($_ % 3 -eq 0){$a+="fizz";$b=$true};if($_ % 5 -eq 0){$a+="buzz";$b=$true};if(!$b){$_}else{$a}}元記事:http://blogs.wankuma.com/mutaguchi/archive/2007/08/05/88870.aspx
プライバシーポリシー