Question
For each of the following problems, you need to find a recursive solution. For problems involving NaturalNumber, use only the kernel methods. Do not use
For each of the following problems, you need to find a recursive solution. For problems involving NaturalNumber, use only the kernel methods. Do not use "tricks" like converting a NaturalNumber into a String and then solving the problem on the String.
- Implement the static method declared as follows:
/**
* Returns the number of digits of {@code n}.
*
* @param n
* {@code NaturalNumber} whose digits to count
* @return the number of digits of {@code n}
* @ensures numberOfDigits = [number of digits of n]
*/
private static int numberOfDigits(NaturalNumber n) {...}
- Implement the static method declared as follows:
/**
* Returns the sum of the digits of {@code n}.
*
* @param n
* {@code NaturalNumber} whose digits to add
* @return the sum of the digits of {@code n}
* @ensures sumOfDigits = [sum of the digits of n]
*/
private static int sumOfDigits(NaturalNumber n) {...}
- In addition to the kernel methods, for this question (only!) you are allowed to use the NaturalNumber method add. Implement the static method declared as follows:
/**
* Returns the sum of the digits of {@code n}.
*
* @param n
* {@code NaturalNumber} whose digits to add
* @return the sum of the digits of {@code n}
* @ensures sumOfDigits = [sum of the digits of n]
*/
private static NaturalNumber sumOfDigits(NaturalNumber n) {...}
- Implement the static method declared as follows:
/**
* Divides {@code n} by 2.
*
* @param n
* {@code NaturalNumber} to be divided
* @updates n
* @ensures 2 * n <= #n < 2 * (n + 1)
*/
private static void divideBy2(NaturalNumber n) {...}
- Implement the static method declared as follows:
/**
* Checks whether a {@code String} is a palindrome.
*
* @param s
* {@code String} to be checked
* @return true if {@code s} is a palindrome, false otherwise
* @ensures isPalindrome = (s = rev(s))
*/
private static boolean isPalindrome(String s) {...}
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started