Rebol3 Code Examplex
Sudan function
Compute the recursive Sudan function.
Rebol [
title: "Rosetta code: Sudan function"
file: %Sudan_function.r3
url: https://rosettacode.org/wiki/Sudan_function
]
sudan: function [
"Compute the Sudan function, a non-primitive recursive function"
n [integer!] "Recursion depth"
x [integer!]
y [integer!]
][
if n = 0 [return x + y] ;; base: addition
if y = 0 [return x] ;; base: identity
sudan n - 1 (sudan n x y - 1) y + (sudan n x y - 1) ;; double recursion
]
print ["sudan 0 0 0 ==" sudan 0 0 0]
print ["sudan 1 1 1 ==" sudan 1 1 1]
print ["sudan 2 1 1 ==" sudan 2 1 1]
print ["sudan 3 1 1 ==" sudan 3 1 1]
print ["sudan 2 2 1 ==" sudan 2 2 1]