/* Soft-Uebungen WS 98/99 * * Blatt 1 vom 20.10.98 bis 27.10.98 mm * Familie Rekursi */ #includeint anz_jahr, anz_rekursis; /* Funktion: weibliche Rekursis bestimmen */ int rekursi_w (int jahr) { int i, anz; anz = 0; i = 1; while ( i <= jahr ) { /* nach 20 Jahren eine Tochter */ if ( i == 20){ anz +=1; /* wenn Nachfolger noch moeglich sind */ if ((i + 20 )<= jahr) { anz += rekursi_w(jahr-20); } } /* nach 25 Jahren eine Tochter */ if ( i == 25){ anz +=1; /* wenn Nachfolger noch moeglich sind */ if ((i + 20 )<= jahr) { anz += rekursi_w(jahr-25); } } /* Ableben nach 74 Jahren */ if ( i == 74) anz -= 1; i++; } return anz; } /* Funktion: maennliche Rekursis bestimmen */ int rekursi_m (int jahr) { int i, anz; anz = 0; i = 1; while ( i <= jahr ) { /* nach 26 Jahren einen Sohn */ if ( i == 26){ anz +=1; /* wenn Nachfolger noch moeglich sind */ if ((i + 26 ) <= jahr) { anz += rekursi_m(jahr-26); } } /* nach 27 Jahren eine Tochter */ if ( i == 27){ anz +=1; /* wenn Nachfolger noch moeglich sind */ if ((i + 20 )<= jahr) { anz += rekursi_w(jahr-27); } } /* Ableben nach 70 Jahren */ if ( i == 70) anz -= 1; i++; } return anz; } int main(void ){ anz_jahr = 0; while( anz_jahr == 0 ){ printf( "Lebende Rekursis nach .. Jahren? " ); scanf( "%ld", &anz_jahr ); } anz_rekursis = rekursi_m(anz_jahr); printf( "\nDie Anzahl der Rekursis nach %d Jahren betraegt %5d \ Familienmitglieder\n",anz_jahr, anz_rekursis+1 ); return 0; }
Martina Maier, 2. November 1998