SetRecursion

Sets the maximum number of iterations for recursion and loops within an expression.

Format 

SetRecursion ( expression ; maxIterations )

Parameters 

expression - any calculation expression, field, or constant.

maxIterations - the maximum number of iterations.

Data type returned 

text, number, date, time, timestamp, container

Originated in version 

18.0

Description 

By default, the While function and recursive custom functions are each limited to 50,000 iterations. This function allows you to increase or decrease the limit to maxIterations. If maxIterations is exceeded, this function will return "?"; otherwise, it returns the result of expression.

Notes 

  • Custom functions that use non-tail recursion are also subject to maxIterations specified by SetRecursion. However, they will also terminate and return "?" if the available stack space in memory becomes too small, regardless of SetRecursion.

Example 1 

Returns "?" because the While loop attempts to iterate more than the limit of five times specified by SetRecursion.

Copy
SetRecursion ( 
    While (  
        [ i = 0 ; out = "" ] ;
        i ≤ 10 ;  
        [ 
            i = i + 1 ; 
            out = out & $variable[ i ] & ¶ 
        ] ;
        out 
    ) ; 
5 )

Example 2 

Returns 100000 because SetRecursion increases the iteration limit to 200000.

Copy
SetRecursion ( 
    While (  
        i = 0 ; 
        i < 100000 ; 
        i = i + 1 ; 
        i 
    ) ; 
200000 )