Solutions for those exercises.
Multiple Choices
-
What is the simplest definition of recursion?
- A method is recursive if it does not take arguments.
- A property is recursive if it has a backing field.
- A method is recursive if it calls itself.
- A method is recursive if it calls a constructor.
- A class is recursive if it inherits from another class.
-
Consider the following code:
void Test(int n) { if (n != 0){ Console.Write($"{n} "); Test(n - 1); } } Test(3);What will it display?
- Nothing
- n
- 3 2 1
- 3 2 1 0
- 3 2 1 0 -1 -2 -3 -4 -5 … until the program crashes.
- 2 1 0 -1 -2 -3 -4 -5 … until the program crashes.
- 1 2 3
- 0 1 2 3
-
Consider the following code:
void Test(int n) { Console.Write($"{n} "); Test(n - 1); } Test(3);What will it display?
- Nothing
- n
- 3 2 1
- 3 2 1 0
- 3 2 1 0 -1 -2 -3 -4 -5 … until the program crashes.
- 2 1 0 -1 -2 -3 -4 -5 … until the program crashes.
- 1 2 3
- 0 1 2 3
-
Consider the following code:
void Test(int n) { Test(n - 1); Console.Write($"{n} "); } Test(3);What will it display?
- Nothing
- n
- 3 2 1
- 3 2 1 0
- 3 2 1 0 -1 -2 -3 -4 -5 … until the program crashes.
- 2 1 0 -1 -2 -3 -4 -5 … until the program crashes.
- 1 2 3
- 0 1 2 3
Exercises
-
What would the following code display?
int Myst1(int n) { if (n != 0) { return n + Myst1(n - 1); } else { return n; } } Console.WriteLine(Myst1(4)); -
What would the following code display?
void Myst2(int n) { if (n == 0) { Console.WriteLine("Done"); } else if (n < 0) { Console.Write($"{n} "); Myst2(-n); } else { Console.Write($"{n} "); Myst2(-(n - 1)); } } Myst2(3); -
What would the following code display?
void Myst3(int len) { MystH(0, 1, 1, len); } void MystH(int axP, int bxP, int counter, int len) { if (counter <= len) { Console.Write($"{axP} "); MystH(bxP, axP + bxP, counter + 1, len); } } Myst3(6); -
Rewrite the following
whileloop as a recursive method.int i = 10; while (i > 0) { Console.Write($"{i} "); i--; } -
Rewrite the following
doloop as a recursive method.int n = 10; int sum = 0; do { sum += n; n--; } while (n > 0); Console.WriteLine($"Sum: {sum}"); -
Rewrite the following
doloop as a recursive method.int n; do { Console.WriteLine("Enter an integer, 0 to exit."); n = int.Parse(Console.ReadLine()); } while (n != 0); Console.WriteLine("Bye!"); -
Rewrite the following
forloop as a recursive method.int[] test = { 1, 5, 2, 10, 11, -12, -11 }; for (int l = 0; l < test.Length; l++) { if (test[l] % 2 != 0) { Console.Write($"{test[l]} "); } } // Display odd values using recursion void OddInArray(int[] arP, int cIndex) { if (cIndex < arP.Length) { if (arP[cIndex] % 2 != 0) { Console.Write($"{arP[cIndex]} "); } OddInArray(arP, cIndex + 1); } } OddInArray(test, 0); -
Write a recursive method that takes an
intas argument, generates a randomintbetween0and this argument, displays it and calls itself with that number. The method should stop when theintgenerated is 0. -
Write a recursive method that takes a
stringas argument and returnstrueif it is a palindrome. Your method should returntrueon input"civic","noon","radar"and""(empty string), andfalseon input"test"and"not a palindrome". -
Write a recursive method that takes an
intas argument and returns the number of even digits in it. For example, on input631, the method should return1since only6is even. -
Write a recursive method that displays a one-dimensional array of
int. You can write an example usage if it helps you.