11.8.3. Medium Multiple Choice QuestionsΒΆ
These problems are similar to those you will see on the AP CSA exam.
- 1441
- The first call to
mystery
with the integer 1234 will print 1234 % 10. The '%' means remainder. The remainder of 1234 divided by 10 is 4 so the first thing printed must be 4. - 43211234
- This has a recursive call which means that the method calls itself when (x / 10) is greater than or equal to zero. Each time the method is called it prints the remainder of the passed value divided by 10 and then calls the method again with the result of the integer division of the passed number by 10 (which throws away the decimal part). After the recursion stops by
(x / 10) == 0
the method will print the remainder of the passed value divided by 10 again. - 3443
- The first call to
mystery
with the integer 1234 will print 1234 % 10. The '%' means remainder. The remainder of 1234 divided by 10 is 4 so the first thing printed must be 4. - 12344321
- The first call to
mystery
with the integer 1234 will print 1234 % 10. The '%' means remainder. The remainder of 1234 divided by 10 is 4 so the first thing printed must be 4. - Many digits are printed due to infinite recursion.
- When the recursive call to
mystery(1)
occurs (the 4th call to mystery), the division of x /10 equals .01--this becomes 0 because this is integer division and the remainder is thrown away. Therefore the current call will be completed and all of the previous calls tomystery
will be completed.
10-7-3-1: Given the following method declaration, which of the following is printed as the result of the call mystery(1234)
?
1//precondition: x >=0
2public static void mystery (int x)
3{
4 System.out.print(x % 10);
5
6 if ((x / 10) != 0)
7 {
8 mystery(x / 10);
9 }
10 System.out.print(x % 10);
11}
You can step through the code using the Java Visualizer by clicking on the following link: Q-11-7-1.
- 243
- For the call
mystery(5)
,n != 0
so theelse
statement is executed. This results in the next recursive call ofmystery(4)
. This will continue until the callmystery(0)
is executed. At this point, the value 1 will be returned. Then each call ofmystery
can return with the 3 * the result of the recursive call. So this method will compute 3 to the given power. - 0
- This can never be 0 because the stopping condition returns 1 when you call
mystery(0)
- 3
- This would only be true if you called
mystery(1)
- 81
- This would be true if you called
mystery(4)
- 27
- This would be true if you called
mystery(3)
10-7-3-2: Given the following method declaration, what value is returned as the result of the call mystery(5)
?
1public static int mystery(int n)
2{
3 if (n == 0)
4 {
5 return 1;
6 }
7 else
8 {
9 return 3 * mystery (n - 1);
10 }
11}
You can step through the code using the Java Visualizer by clicking on the following link: Q-11-7-2.
- 1
- The value 1 will only be returned when the initial call to product is less than or equal to 1.
- 10
- If you assume the purpose of the method is to compute
n * 2
, this is correct, but the product method does not do this. Be sure to trace the code to see what happens. - 25
- If you assume the purpose of the method is to compute
n * n
this is correct, but the product method does not do this. Be sure to trace the code to see what happens. - 3125
- If you assume the purpose of the method is to compute
n ^ n
, this would be correct. But product does not do this. Be sure to trace the code to see what happens. - 15
- The result from
product(5)
is5 * product(3)
which is 3 * product(1) which is1
so the answer is1 * 3 * 5 = 15
.
10-7-3-3: Given the following method declaration, what value is returned as the result of the call product(5)
?
1public static int product(int n)
2{
3 if (n <= 1)
4 {
5 return 1;
6 }
7 else
8 {
9 return n * product(n - 2);
10 }
11}
You can step through the code using the Java Visualizer by clicking on the following link: Q11-7-3.
- 8
- This would be true if it was
f(6)
notf(5)
. - 3
- This would be true if it was
f(4)
notf(5)
. - There is no result because of infinite recursion.
- This method will stop when
n
equals0
or1
. - 5
- This is the Fibonacci method which returns
0
for0
and1
for1
andFibonacci(n-1) + Fibonacci(n-2)
for the rest of the numbers. - 0
- This would be true if it was
f(0)
notf(5)
.
10-7-3-4: Given the following method declaration, what value is returned as the result of the call f(5)
?
1public static int f(int n)
2{
3 if (n == 0)
4 {
5 return 0;
6 }
7 else if (n == 1)
8 {
9 return 1;
10 }
11 else
12 {
13 return f(n-1) + f(n-2);
14 }
15}
You can step through the code using the Java Visualizer by clicking on the following link: Q11-7-4.