PowerShell - 再帰関数
function fact($i) { if($i -eq 0) { return 1 } else { return $i * (fact ($i - 1)) } } fact 5 # 120
2017/1/28追記 再帰回数に限界がある模様
Win10 PowerShell 5.1の環境で、以下の関数fooの引数が1000の場合は正常終了しましたが、5000の場合はエラーになりました。
function foo { param($i) #Write-Host $i if($i -eq 0){return 1} return (foo($i - 1)) + 1 } Write-Host (Get-Date) Write-Host "Result: $(foo(5000))" Write-Host (Get-Date)
PS C:\> C:\powershell\test.ps1 2017/01/28 21:47:03 Result: 1001 2017/01/28 21:47:04 PS C:\> C:\powershell\test.ps1 2017/01/28 21:47:18 呼び出しの深さのオーバーフローのため、スクリプトが失敗しました。 + CategoryInfo : InvalidOperation: (0:Int32) []、ParentContainsErrorRecordException + FullyQualifiedErrorId : CallDepthOverflow