Rekurz. suma prvih n parnih vs neparnih - greška?

poruka: 6
|
čitano: 1.922
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
6 godina
neaktivan
offline
Rekurz. suma prvih n parnih vs neparnih - greška?

ovo je kod za sumu prvih N neparnih i radi kako treba:

 

//suma prvih n neparnih prirodnih brojeva rekurzivnom f-jom.
#include <cstdlib>
#include <iostream>
using namespace std;
 
long long suman (short n1)
   {if (n1 ==1) return 1;
    else return n1+suman(n1-2);
    }
 
int main()
{   short n;
    cout << "Unesi prirodan broj  ";
    cin >> n;
    cout << "Suma prvih " << n<< "  neparnih prirodnih brojeva  " << suman(2*n-1) << endl;
}

 

 

međutim kad iz njega pokušam napraviti isto za prvih N parnih, iz nekog razloga ne radi - ne dogodi se ništa: http://cpp.sh/3o5k3o

ne vidim grešku? (boldano dijelovi koje sam promijenio)

 

// 2 - sumu prvih n PARNIH prirodnih brojeva rekurzivnom f-jom.
#include <cstdlib>
#include <iostream>
using namespace std;
 
long long suman (short n1)
   {if (n1 ==1) return 2;
    else return n1+suman(n1-2);
    }
 
int main()
{   short n;
    cout << "Unesi prirodan broj  ";
    cin >> n;
    cout << "Suma prvih " << n<< " PARNIH prirodnih brojeva  " << suman(2*n) << endl;
}

 

 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Rekurz. suma prvih n parnih vs neparnih - greš

Kod kojeg si stavio u pitanje radi ispravno. Greška je u kodu kojeg si unio u cpp.sh jer tamo 15. redak glasi:

 

    cout << "Suma prvih " << n<< "  PARNIH prirodnih brojeva  " << suman(2*n) << endl;

 

Funkciji za računanje sume neparnih brojeva šalješparni broj pa imaš beskonačnu rekurziju.

6 godina
neaktivan
offline
Re: Rekurz. suma prvih n parnih vs neparnih - greš
Bobobo-bo Bo-bobo kaže...

Kod kojeg si stavio u pitanje radi ispravno. Greška je u kodu kojeg si unio u cpp.sh jer tamo 15. redak glasi:

 

    cout << "Suma prvih " << n<< "  PARNIH prirodnih brojeva  " << suman(2*n) << endl;

 

Funkciji za računanje sume neparnih brojeva šalješparni broj pa imaš beskonačnu rekurziju.

 

ali ovo je iz drugog koda, ta funkcija je za računanje parnih?

11 godina
neaktivan
offline
Re: Rekurz. suma prvih n parnih vs neparnih - greš

Sorry, moja greška.

 

 

Kod za parne ne radi jer je uvjet za prekidanje rekurzije n1 == 1, ali n1 je uvijek paran pa nastaje beskonačna rekurzija. Treba vratiti 2 nad je n1 == 2:

 

long long suman (short n1)
   {if (n1 == 2) return 2;
    else return n1+suman(n1-2);
    }
 

6 godina
neaktivan
offline
Re: Rekurz. suma prvih n parnih vs neparnih - greš
Bobobo-bo Bo-bobo kaže...

Sorry, moja greška.

 

 

Kod za parne ne radi jer je uvjet za prekidanje rekurzije n1 == 1, ali n1 je uvijek paran pa nastaje beskonačna rekurzija. Treba vratiti 2 nad je n1 == 2:

 

long long suman (short n1)
   {if (n1 == 2) return 2;
    else return n1+suman(n1-2);
    }
 

 

zar nije za n1==2   ->  prva 2 parna broja = 2+4 = 6?

ili se računa 0 kao parni?

16 godina
neaktivan
offline
Re: Rekurz. suma prvih n parnih vs neparnih - greš
Tomo22 kaže...
Bobobo-bo Bo-bobo kaže...

Sorry, moja greška.

 

 

Kod za parne ne radi jer je uvjet za prekidanje rekurzije n1 == 1, ali n1 je uvijek paran pa nastaje beskonačna rekurzija. Treba vratiti 2 nad je n1 == 2:

 

long long suman (short n1)
   {if (n1 == 2) return 2;
    else return n1+suman(n1-2);
    }
 

 

zar nije za n1==2   ->  prva 2 parna broja = 2+4 = 6?

ili se računa 0 kao parni?

 

U rekurzivnoj funkciji nisi odredio da li gledaš sumu parnih u N ili No skupu.

To si odredio argumentom n u pozivu funkcije.

Za N skup n1 je 2n

Za No skup n1 je 2n - 2

Poruka je uređivana zadnji put uto 4.9.2018 14:23 (Floki).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice