//thema1_Jun16.cpp // ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΙΟΥΝΗ 2016 // ΘΕΜΑ 1. #include using namespace std; // Συνάρτηση που επιστρέφει τον n-sto όρο της ακολουθίας double fract(int n){ if (n == 1) return 1.0; else { n--; return 1.0/(2.0 + fract(n)); } } // Συνάρτηση που αποθηκεύει στην διεύθυνση της res το άθροισμα της σειράς // των πρώτων n όρων της ακολουθίας void fractsum(int n, double &res){ if (n == 1) res = 1.0; else { fractsum(n-1, res); // καλώ την αναδρομή μέχρι να γίνει n = 1 res = res + fract(n); // προσθέτω τον νέο όρο } } double fractsum1(int n){ double res; if (n == 1) return 1.0; else { res = fractsum1(n-1) + fract(n); // προσθέτω τον νέο όρο // καλώ την αναδρομή μέχρι να γίνει n = 1 return res; // επιστρέφω το αποτέλεσμα της σειράς } } // main function int main(){ int n; double result = 0.0; cout << "Δώστε το n\n"; cin >> n; cout.precision(16); for (int i = 1; i <= n; i++){ cout << fract(i) << ", " << "\n"; } // χρησιμοποιώ την fractsum() fractsum(n, result); cout << "result = " << result << "\n"; // χρησιμοποιώ την fractsum1() result = fractsum1(n); cout << "result = " << result << "\n"; return 0; }