Untitled
unknown
c_cpp
a year ago
2.3 kB
5
Indexable
#include <stdio.h> int sumator( int jeszczeKrokow, int sumaDotychczas ); void dwojkowo( int liczba ); void schodki( int ile, char znak ); //***************************************************** int main() { printf("Sumowanie liczb naturalnych od 0 do n. Podaj wartosc n: "); int n = 0; scanf( "%d", &n ); printf( "\nSuma liczb naturalnych od 0 do %d to = %d\n", n, sumator( n, 0 ) ); //---------------------------------------------------------- // inny przykład funkcji rekurencyjnej //---------------------------------------------------------- int liczba = 241; printf( "\n%d to dwojkowo ", liczba ); dwojkowo( liczba ); printf( "\n" ); liczba = 30942; printf( "\n%d to dwojkowo ", liczba ); dwojkowo( liczba ); printf( "\n" ); return 0; } //***************************************************** int sumator( int jeszczeKrokow, int sumaDotychczas ) { int rezultat = 0; static int krokRekurencji; int toPietroNr = krokRekurencji; krokRekurencji++; schodki( toPietroNr, '>' ); printf( "%d + %d = %d\n", sumaDotychczas, toPietroNr, sumaDotychczas + toPietroNr ); // właściwa operacja sumowania sumaDotychczas += toPietroNr; // warunek zatrzymujący rekurencję ++++++++++++ if( jeszczeKrokow > 0 ) { // zatem kontynuujemy wywołania rekurencyjne rezultat = sumator( jeszczeKrokow - 1, sumaDotychczas ); } else { // zatem zatrzymujemy printf( "........to ostatni krok, wracamy......\n" ); rezultat = sumaDotychczas; } schodki( toPietroNr, '<' ); printf( "\n" ); krokRekurencji--; return rezultat; } //***************************************************** void dwojkowo( int liczba ) { int reszta = liczba % 2; if( liczba > 1 ) // warunek zatrzymujący { dwojkowo( liczba / 2 ); // wywołanie rekurencyjne } printf( "%d", reszta ); return; } //***************************************************** void schodki( int ile, char znak ) { printf( "%d pietro: ", ile ); for( int m = 0 ; m < ile ; m++ ) { printf( "%c ", znak ); } printf( " " ); }
Editor is loading...
Leave a Comment