Forum » Programiranje » (Java)faktoriela
(Java)faktoriela
pajac ::
public class Risto
{
/**
* Metoda za izracun FAKTORIELE
* podanega naravnega stevila
*/
static int faktoriela(int n)
{
int rezult=0; // nam shrani rezultat
int[] temp=new int[n]; // izracunavanje rezultata
int[] tabelca=new int[n]; // naredimo iz naravnega stevila tabelo
// nafilamo tabelo
for(int i=0; i< n; i++)
{
tabelca[i] += 1;
}
// dejansko racunanje fakt.
for(int i=0; i< n; i++)
for(int j=0; j< tabelca.length; j++)
{
temp[j] *= tabelca[i]; // mnozimo oz racunamo.
rezult = temp[j];
}
return rezult;
}
}
Problem je ta da pri klicanju metode za izracun faktoriele dobim rezultat 0!!
{
/**
* Metoda za izracun FAKTORIELE
* podanega naravnega stevila
*/
static int faktoriela(int n)
{
int rezult=0; // nam shrani rezultat
int[] temp=new int[n]; // izracunavanje rezultata
int[] tabelca=new int[n]; // naredimo iz naravnega stevila tabelo
// nafilamo tabelo
for(int i=0; i< n; i++)
{
tabelca[i] += 1;
}
// dejansko racunanje fakt.
for(int i=0; i< n; i++)
for(int j=0; j< tabelca.length; j++)
{
temp[j] *= tabelca[i]; // mnozimo oz racunamo.
rezult = temp[j];
}
return rezult;
}
}
Problem je ta da pri klicanju metode za izracun faktoriele dobim rezultat 0!!
HA!..Tega pa nima še nihče!! ;p
- spremenilo: pajac ()
DMouse ::
tabelca[i] += 1;
Tale ukaz mi je malo čuden, ti teoretično ne veš kakšna je začetna vrednost integerja, potem pa to vrednost povečaš za 1?
Tista dvojna zanka je pa še bolj krneki. Sori, ampak nevem kaj nej drugega rečem. Prvič, nevem zakaj si šel delat še eno začasno tabelo. Drugič: tudi ta začasna tabela ima nedefinirane vrednosti (v praksi je vrednost 0), potem pa to pomnožiš z enim elementom druge tabele... 0 * (0 + 1) = 0.
Tretjič: denimo da bi v tabelah bile kake logične vrednosti, bi stavek "temp[j] *= tabelca[i];" v temp vedno prepisoval prejšnje vrednosti. Edini efekt zunanje zanke je daljše izvajanje, v praksi bi namesto nje lahko naredil i = n - 1;
Tale ukaz mi je malo čuden, ti teoretično ne veš kakšna je začetna vrednost integerja, potem pa to vrednost povečaš za 1?
Tista dvojna zanka je pa še bolj krneki. Sori, ampak nevem kaj nej drugega rečem. Prvič, nevem zakaj si šel delat še eno začasno tabelo. Drugič: tudi ta začasna tabela ima nedefinirane vrednosti (v praksi je vrednost 0), potem pa to pomnožiš z enim elementom druge tabele... 0 * (0 + 1) = 0.
Tretjič: denimo da bi v tabelah bile kake logične vrednosti, bi stavek "temp[j] *= tabelca[i];" v temp vedno prepisoval prejšnje vrednosti. Edini efekt zunanje zanke je daljše izvajanje, v praksi bi namesto nje lahko naredil i = n - 1;
kopernik ::
public static int faktoriela(int n) { int x = 1; for (int i = 2; i <= n; i++) { x = x * i; } return x; }
Zgodovina sprememb…
- spremenil: kopernik ()
kopernik ::
Problem imaš, ker se pri inicializaciji int arraya vedno postavijo vrednosti na 0. Množenje z nič je pa vedno nič.
pajac ::
Ja pa zakaj bi blo enostavno. če lahko kompliciramo?
Uglavnem hvala vama na pomoci (pocasi bo ze steklo to programiranje...)!
Uglavnem hvala vama na pomoci (pocasi bo ze steklo to programiranje...)!
HA!..Tega pa nima še nihče!! ;p
SeTAr ::
Pa še en bolj "didaktičen" primer:
public static int faktoriela(int n){ if (n==1 || n==0) return 1; else return ( n * faktoriela(n-1) ); }
Zgodovina sprememb…
- spremenil: SeTAr ()
Matek ::
tabelca[i] += 1;To ni C, v Javi se prazen array intov ob inicializaciji napolni z ničlami, kot je rekel kopernik.
Tale ukaz mi je malo čuden, ti teoretično ne veš kakšna je začetna vrednost integerja, potem pa to vrednost povečaš za 1?
Bolje ispasti glup nego iz aviona.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Domača naloga za faksOddelek: Programiranje | 2078 (1702) | Spura |
» | JavaOddelek: Pomoč in nasveti | 1354 (979) | shadeX |
» | [C++] Kako vrniti NULL če je polje praznoOddelek: Programiranje | 1755 (1272) | Matic1911 |
» | C# (strani: 1 2 )Oddelek: Programiranje | 11986 (8821) | Ericssony |
» | osnove v Javi - zvezdiceOddelek: Programiranje | 3523 (2745) | Tutankhamun |