2007/08/05

今日まっちゃ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

古い記事へ | 新しい記事へ


プライバシーポリシー

Twitter

Books