Step 1

		
			function recursion(func) {
				return func(func)
			}
		
	

By the very definition of the Y-Combinator, recursion in the form most, if not all, developers understand is not supported. A function cannot call itself, from within its own definition. But as this is what we understand recursion to be, a workaround must be created. This is where the function recursion comes into play. A function may not be able to call itself, but we can write a separate function to call said function, while also passing that very same function to it. This will allow us to create and build up the function.

This may build in the recursive definition, but it still does not allow us to apply the function we build here, nor does it even allow us to even build recursion further than one magnitude higher.