<Table> <Tr> <Th> </Th> <Th> </Th> </Tr> <Tr> <Td> void function (argument) (if (condition) function (argument. next);) </Td> <Td> stack. push (argument); while (! stack. empty ()) (argument = stack. pop (); if (condition) stack. push (argument. next);) </Td> </Tr> </Table> <Tr> <Th> </Th> <Th> </Th> </Tr> <Tr> <Td> void function (argument) (if (condition) function (argument. next);) </Td> <Td> stack. push (argument); while (! stack. empty ()) (argument = stack. pop (); if (condition) stack. push (argument. next);) </Td> </Tr> <P> A primitive recursive function like the one on the left side can always be transformed into a loop like on the right side . </P>

In case of infinite recursion following memory would be overflown