1. Design and implement an iterative version of the factorial function.
2. Design and implement a recursive function for determining whether a string is a palindrome. A palindrome is a string of characters that is the same as the string of characters in reverse.
3. Design and implement a recursive function for computing the greatest common divisor of two integer values.