/* * Programmieren fuer Physiker, SS 2010 * * Klausur, Aufg. 5 */ #include using namespace std ; // berechne summe der ziffernquadrate, rekursive Variante long zqs(long n) { if (n==0) return 0 ; // Argument 0: Ende der Rekursion // Rekursion: Quadrat der letzten Ziffer + zqs(restliche Ziffern) return (n%10)*(n%10) + zqs(n/10) ; } // Folge der iterierten zqs, solange bis Verhalten klar ist. Rekursion bool froehlich(long n) { if (n==1) return true ; if (n==4) return false ; // noch nicht klar, rechne naechstes Folgenglied aus und schaue... return froehlich(zqs(n)) ; } int main() { long z ; cout << "Froehlichkeits-Test" << endl ; cout << "'ne positive Zahl bitte: " ; cin >> z ; if (froehlich(z)) cout << z << " ist froehlich." << endl ; else cout << z << " ist *nicht* froehlich!" << endl ; }