Recursion is the process of repeating items in a self-similar way. In programming languages, if a program allows you to call a function inside the same function, then it is called a recursive call of the function.
void recursion() {
recursion(); /* function calls itself */
}
int main() {
recursion();
}
Recursion is a technique where we solve a problem by first solving a much smaller one. It the following projects, I put my knowledge of recursion to the test.
NOTE: my algorithms may not be 100% accurate.
0. She locked away a secret, deep inside herself, something she once knew to be true... but chose to forget
Write a function that prints a string, followed by a new line.
- Prototype:
void _puts_recursion(char *s);
FYI: The standard library provides a similar function: puts
. Run man puts
to learn more.
Write a function that prints a string in reverse.
- Prototype:
void _print_rev_recursion(char *s);
2. Dreams feel real while we're in them. It's only when we wake up that we realize something was actually strange
Write a function that returns the length of a string.
- Prototype:
int _strlen_recursion(char *s);
FYI: The standard library provides a similar function: strlen
. Run man strlen
to learn more.
Write a function that returns the factorial of a given number.
-
Prototype:
int factorial(int n);
-
If
n
is lower than0
, the function should return-1
to indicate an error -
Factorial of
0
is1
Write a function that returns the value of x
raised to the power of y
.
-
Prototype:
int _pow_recursion(int x, int y);
-
If
y
is lower than0
, the function should return-1
FYI: The standard library provides a different function: pow
. Run man pow
to learn more.
Write a function that returns the natural square root of a number.
-
Prototype:
int _sqrt_recursion(int n);
-
If
n
does not have a natural square root, the function should return-1
FYI: The standard library provides a different function: sqrt
. Run man sqrt
to learn more.
Write a function that returns 1
if the input integer is a prime number, otherwise return 0
.
- Prototype:
int is_prime_number(int n);
7. They say we only use a fraction of our brain's true potential. Now that's when we're awake. When we're asleep, we can do almost anything
Write a function that returns 1
if a string is a palindrome and 0
if not.
-
Prototype:
int is_palindrome(char *s);
-
An empty string is a palindrome
Write a function that compares two strings and returns 1
if the strings can be considered identical, otherwise return 0
.
- Prototype:
int wildcmp(char *s1, char *s2);
s2
can contain the special character*
.- The special char
*
can replace any string (including an empty string)