εργαστηριο 17 - πανεπιστημιο κυπρου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι
ΕΡΓΑΣΤΗΡΙΟ 17
Άσκηση 1.
Γράψτε ένα πρόγραμμα το οποίο χρησιμοποιεί μια αναδρομική συνάρτηση για να υπολογίσει το
άθροισμα:
sum = 1 + 1/2 + 1/3 +...+1/n, n >= 1
The Solution
double sum(int n)
// n>=1
{
if (___________)
return _____________;
return ______ + sum(______);
}
Άσκηση 2.
Γράψτε ένα πρόγραμμα NumberOfDigits.java το οποίο χρησιμοποιεί μια αναδρομική
συνάρτηση για να μετρήσει το πλήθος των ψηφίων ενός ακέραιου αριθμού.
Άσκηση 3.
Γράψτε ένα πρόγραμμα Palindrome.java το οποίο χρησιμοποιεί μια αναδρομική συνάρτηση για
να ελέγχει αν μια λέξη είναι παλινδρομική.
Παραδειγμα εκτελεσης:
Is radar a palindrome?
Is anna a palindrome?
Is kokoriko a palindrome?
true
true
false
Άσκηση 4.
Γράψτε ένα πρόγραμμα GeometricAndHarmonicProgressions.java το οποίο χρησιμοποιεί δυο
αναδρομικές συναρτήσεις για να υπολογίσει το γινόμενο των n πρώτων ακέραιων (geometric
progression, 1 * 2 * 3 * … * n) και το γινόμενο των αντιστρεφόμενων n πρώτων ακέραιων
(inverses of the first n integers (harmonic progression), 1 * 1/2 * 1/3 * … * 1/n).
ΕΠΛ131 – Εργαστήριο 1. Υπεύθυνοι Εργαστηρίων: Πύρρος Μπράτσκας, Παύλος Αντωνίου
1
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι
Άσκηση 5.
Γράψτε ένα πρόγραμμα Reverse.java που να διαβάζει μια σειρά ακεραίων αριθμών
απροσδιορίστου μεγέθους (να τερματίζει όταν δοθεί 0) και να την τυπώνει αντίστροφα. Αυτό
επιτυγχάνεται με τη χρήση της αναδρομικής συνάρτησης rev (int i).
Παράδειγμα εκτέλεσης:
Tha doseis mia seira akeraion arithmon ena-ena.
Dwse 0 gia termatismo.
Dwse arithmo: 10
Dwse arithmo: 3
Dwse arithmo: 12
Dwse arithmo: -1
Dwse arithmo: 444
Dwse arithmo: 2
Dwse arithmo: 0
2
444
-1
12
3
10
Other Examples
Write a menu-driven program that completes each task using a recursive function. A shell
program is available from your teacher.


Write a function called letters that takes a lower case letter as its argument and
displays the sequence of letters from 'a' to the given letter.
For example:
Letters('a'); displays a and Letters('d'); displays abcd
Write a function called twos that takes a single integer as its argument and returns the
number of factors of 2 in the number. (Hint: odd numbers have no factors of 2, numbers
that are twice an odd number have one, numbers that are four times an odd have two, and
so on.)
For example:

System.out.print(twos(-12)); returns 2
Write a Boolean function called powerof3 that takes



if (powerof3(81))
System.out.println("81 is a power of 3.");
else
a single positive integer argument
and returns true iff the integer is a perfect power of 3 such as 1, 3, 9, 27, 81, ...
For example:
ΕΠΛ131 – Εργαστήριο 1. Υπεύθυνοι Εργαστηρίων: Πύρρος Μπράτσκας, Παύλος Αντωνίου
2
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι
System.out.println("81 is not a power of 3.";
displays 81 is a power of 3



Write a function called reverse that takes a single long integer argument and returns the
result of reversing its digits. For partial credit, write a void function that just displays the
number in reverse.
For example:
System.out.print(reverse(-12)); returns -21
System.out.print(reverse(1234567)); returns 7654321
Write a function called base5 that takes a single nonnegative integer
argument and
displays its base five equivalent.
For example:
base5(136); displays 1021
base5(5); displays 10
Bonus! Write a function called printWithCommas that takes a single nonnegative long
integer argument and displays it with commas inserted properly.
For example:
printWithCommas(12045670); displays 12,045,670
printWithCommas(1); displays 1
ΕΠΛ131 – Εργαστήριο 1. Υπεύθυνοι Εργαστηρίων: Πύρρος Μπράτσκας, Παύλος Αντωνίου
3