Vypocet faktorialu rekurzivne a iteraciou v C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vypocet faktorialu rekurzivne a iteraciou v C – C / C++ – Fórum – Programujte.comVypocet faktorialu rekurzivne a iteraciou v C – C / C++ – Fórum – Programujte.com

 

pietro620
Návštěvník
17. 10. 2010   #1
-
0
-

1.Napíšte Program pre výpočet faktoriálu rekurzívne?



#include <stdio.h>
#include <stdlib.h>

void recurse(int i);

int main(void)
{
recurse(0);

return 0;
}

void recurse(int i)
{
if(i<20) {
recurse(i+1); /* rekurzívne volanie */
printf("%d ", i);
}
}


2. Napíšte program pre výpočet faktoriálu iteráciou?



#include <stdio.h>
#include <stdlib.h>

void intercuse(int i);

int main(void)
{
intercuse(0);

return 0;
}

void intercuse(int i)
{
if(i<30) {
intercuse(i+1);
printf("%d ", i);
}
}


Prosim Vas ci mam to dobre spravene. Ak niekto z Vas je inak naprogramovat v C (pozn. nie v C++) tak mi prosim napiste tu.

Nahlásit jako SPAM
IP: 195.68.234.–
m->29+6
Super člen
17. 10. 2010   #2
-
0
-

Na tú rekurziu ideš v podstate dobre, len si musíš uvedomiť, že by si tú funkciu chcel volať takto fact(20); pre 20!, fact(10); pre 10!. Tá iterácia sa robí pomocou cyklu (for/while).

Nahlásit jako SPAM
IP: 83.208.112.–
KIIV
~ Moderátor
+43
God of flame
17. 10. 2010   #3
-
0
-

no nevim, jde na rekurzi presne opacne nez by mel.. tj zadat cislo ze ktereho chce delat faktorial a v rekurzi delat vzdy o jedna mene.. + nikde nenasobi aktualni cislo s tim co vrati rekurze

a while je jen o tom, odecitat dokud je vetsi nez nula a mit pomocnou promennou ve ktery je defaultne jednicka a tu pak nasobi aktualnim cislem

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
m->29+6
Super člen
17. 10. 2010   #4
-
0
-

Ja som to myslel tak, že volá tú funkciu rekurzívne. Ale hej, je to naopak - som chcel nakopnúť tými volaniami ako príklad. Aj by som niečo napísal, nejaký kus kódu, ale je to na pár riadkov a nedá sa to napísať tak aby som to nenapísal v podstate celé. Navyše ten faktoriál je asi všade. A hlavne je treba si pozrieť čo je to faktoriál a ako sa počíta na papieri.

Nahlásit jako SPAM
IP: 83.208.112.–
pietro620
Návštěvník
22. 10. 2010   #5
-
0
-

Napište program pre výpočet faktoriálu rekurzívne a iteráciou?

Tu je riesenie:

  

#include <stdio.h>
#include <stdlib.h>

int recurse(int i);
int intercuse(int i);

int main(void)
{
int result1 = recurse(5);
int result2 = intercuse(5);
printf("Rekurzivne: %d\nIteracne: %d\n", result1, result2);

return 0;
}

int recurse(int i)
{
if(i == 0) return 1;
return i * recurse(i-1);
}

int intercuse(int i)
{
int res = 1;
for(int j = 2; j <= i; j++)
{
res *= j;
}
return res;
}


Mam tento program v C++ ale ja chcem preprogramovat do C.

Napiste program pre výpočet Fibonacciho čísiel rekurzívne?

Tu je riesienie:



 

#include <iostream>
using namespace std;
static int t=0;
int fib(int n){
int p[100];
for(int i=0;i<100;i++){
p[i]=0;
}
p[0]=1;
p[1]=1;
for(int y=2;y<=n;y++){
t++;
p[y]=p[y-1]+p[y-2];
}
if(n>=0)return p[n]; else return 0;
}

int main() {
cout<<"Zadaj kolke fibonnaciho cislo chces zistit: ";
int r=0;
cin>>r;
cout<<"Je to cislo "<<fib(r-1);
cout<<"\nPocet iteracii je "<<t;
return 0;
}


Napiste program pre výpočet Fibonacciho čísiel iteráciou?

Tu je riesenie:

 

#include <iostream>
using namespace std;
static int t=0;
int fib(int x){
t++;
if(x<2) return x; else
return fib(x-1)+fib(x-2);
}


int main() {
cout<<"Ktore fibonnaciho cislo si zelate spocitat: ";
int cis=0;
cin>>cis;
cout<<"Je to cislo "<<fib(cis);
cout<<"\nPocet rekurzii je "<<t;
return 0;
}


Nahlásit jako SPAM
IP: 193.87.94.–
crAzY^
~ Moderátor
+10
Grafoman
22. 10. 2010   #6
-
0
-

To pietro62 : To tvoje reseni iteraci, není řešení iterací. Pořád je to rekurze.

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
pietro620
Návštěvník
29. 10. 2010   #7
-
0
-

3. Napíšte program pre výpočet Fibonacciho čísiel rekurzívne?

V programe bude premenná, ktorá bude počítať počet rekurzívnych volaní, resp. iterácií a na konci programu sa objaví. Otestovať v programe pre rôzne vstupné hodnoty n.

 

#include <stdio.h>
#include <stdlib.h>

static int t=0;
int fib(int n){
int p[100];
for(int i=0;i<100;i++){
p[i]=0;
}
p[0]=1;
p[1]=1;
for(int y=2;y<=n;y++){
t++;
p[y]=p[y-1]+p[y-2];
}
if(n>=0)return p[n]; else return 0;
}

int main() {
printf("Zadaj kolke fibonnaciho cislo chces zistit: ");
int r=0;
scanf r;
printf"Je to cislo "fib(r-1);
printf"\nPocet iteracii je "<<t;
return 0;
}


Mam v tomto programe chybu a nemozem prist nato. Program ma byt v C a nie C++

4. Napíšte program pre výpočet Fibonacciho čísiel iteráciou?

V programe bude premenná, ktorá bude počítať počet rekurzívnych volaní, resp. iterácií a na konci programu sa objaví. Otestovať v programe pre rôzne vstupné hodnoty n.


 

#include <stdio.h>
#include <stdlib.h>

using namespace std;
static int t=0;
int fib(int x){
t++;
if(x<2) return x; else
return fib(x-1)+fib(x-2);
}


int main() {
printf ("Ktore fibonnaciho cislo si zelate spocitat: ");
int cis=0;
scanf cis;
printf("Je to cislo " fib(cis));
printf("\nPocet rekurzii je " t);
return 0;
}


Tento program je chybny a na chybu nemozem prist co mam zle spravene. Program v C a nie C++

Nahlásit jako SPAM
IP: 195.68.234.–
liborb
~ Redaktor
+18
Guru
29. 10. 2010   #8
-
0
-

Tvoje iterace vypadá jako skoro správné řešení rekurzivní metodou. A řešení rekurze vypadá spíše na iteraci, jenom si stačí uvědomit, že si stačí pamatovat předchozí 2 mezivýsledky a není je nutné ukládat do pole. Ty mezivýsledky se samozřejmě budou v průběhu výpočtu měnit :)

Nahlásit jako SPAM
IP: 195.189.142.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 34 hostů

Podobná vlákna

Vypočet faktorialu — založil robbie

Násobenie rekurzívne — založil audiotrack

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý