Windows PowerShellでProject Euler(7) 再帰

Problem 3

ふつうに再帰が使えます。

function last_prime($n, $p0 = 2) {
    for([long]$p = $p0; $p * $p -le $n; ++$p) {
        if($n % $p -eq 0) {
            return last_prime ($n / $p) $p
        }
    }
    $n
}

$n = 600851475143
last_prime $n

どれくらいの深さまでOKなのでしょうか。

function last_prime($n, $p0 = 2) {
    for([long]$p = $p0; $p * $p -le $n; ++$p) {
        if($n % $p -eq 0) {
            return last_prime ($n / $p) $p
        }
    }
    $n
}

$n = 600851475143
last_prime $n
呼び出しの深さのオーバーフローのため、スクリプトが失敗しました。呼び出しの深さ
が 1001 に達しましたが、最大値は 1000 です。
    + CategoryInfo          : InvalidOperation: (1001:Int32) []、ParentContains
    ErrorRecordException
    + FullyQualifiedErrorId : CallDepthOverflow

1000回だそうです。