Untitled
unknown
c_cpp
a year ago
2.3 kB
5
Indexable
#include <iostream>
int sumator( int jeszczeKrokow, int sumaDotychczas );
void dwojkowo( int liczba );
void schodki( int ile, char znak );
//*****************************************************
int main()
{
std::cout << "Sumowanie liczb naturalnych od 0 do n. Podaj wartosc n: ";
int n = 0;
std::cin >> n;
std::cout << "\nSuma liczb naturalnych od 0 do " << n << " to = \n" << sumator(n, 0 ) << "\n";
//----------------------------------------------------------
// inny przykład funkcji rekurencyjnej
//----------------------------------------------------------
int liczba = 241;
std::cout << "\n" << liczba << " to dwojkowo ";
dwojkowo(liczba);
std::cout << "\n";
liczba = 30942;
std::cout << "\n" << liczba << " to dwojkowo ";
dwojkowo(liczba);
std::cout << "\n";
return 0;
}
//*****************************************************
int sumator( int jeszczeKrokow, int sumaDotychczas )
{
int rezultat = 0;
static int krokRekurencji;
int toPietroNr = krokRekurencji;
krokRekurencji++;
schodki(toPietroNr, '>');
std::cout << sumaDotychczas << " + " << toPietroNr << " = " << sumaDotychczas + toPietroNr << "\n";
// 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
std::cout << "........to ostatni krok, wracamy......\n";
rezultat = sumaDotychczas;
}
schodki(toPietroNr, '<');
std::cout << "\n";
krokRekurencji--;
return rezultat;
}
//*****************************************************
void dwojkowo( int liczba )
{
int reszta = liczba % 2;
if (liczba > 1) // warunek zatrzymujący
{
dwojkowo(liczba / 2); // wywołanie rekurencyjne
}
std::cout << reszta;
}
//*****************************************************
void schodki( int ile, char znak )
{
std::cout << ile << " pietro: ";
for (int m = 0; m < ile; m++)
{
std::cout << znak << " ";
}
std::cout << " ";
}
Editor is loading...
Leave a Comment