rekurencja nie dziala

0

Witam
Siedze i patrze w kod i <ort>niemoge </ort>wpasc co jest <ort>nietak </ort>:-[
metoda:

 
static double NewtonSymbol2(int n, int m){

double NSymbol=0.0;

if (n==0 || m==n)
   Nsymbol=1.0;
else 
Nsymbol = NewtonSymbol2(n-1,m-1) + NewtonSymbol2(n-1,m);
return  Nsymbol;
}

Metoda powinna zwracac wartosc Symbolu Newtona w sposob rekurencyjny ... analitycznie mi dziala (druga metoda ) poprawnie, rekurencyjnie natomiast zwraca bledne wartosci

dzieki za wskazowki

0

Nie jestem pewien ale czy w funkcji statycznej, jej zmienne lokalne nie pozostają w stałym miejscu w pamięci?

0

A dlaczego używasz typu zmiennoprzecinkowego double ?

0
haquim napisał(a)

A dlaczego używasz typu zmiennoprzecinkowego double ?

Bo wynik moze byc bardzo duzy (dla parametrow m oraz n) choc fakt troche przesadzilem i we floacie by sie zmiescil

co do static to niebardzo chyba

0

Fakt teraz zakumalem :| (ale double do dalszych obliczen jest mi potrzebne ) tu fakt calkowite przeciez wystarcza ;]

a co powoduje to ze funkcja nie zwraca wartosci oczekiwanej tylko bledne? dlaczego jak zmienie z metody statycznosc to niemoge zrobic double x;
x=Metoda(1,2);

 Tzn przypisac wartosci z funkcji zmiennej?
0
Tomek22 napisał(a)
haquim napisał(a)

A dlaczego używasz typu zmiennoprzecinkowego double ?

Bo wynik moze byc bardzo duzy (dla parametrow m oraz n) choc fakt troche przesadzilem i we floacie by sie zmiescil

co do static to niebardzo chyba

Jednak tak sie zastanawiam teraz nad tym bo w moim przypadku wartosc n bedzie bardzo duza(cos kolo 10000) a m (cos kolo jednosci max chyba ze 100) wiec jednak musze zastosowac double tak jak jest prawda?

0

Użyj klasy BigInteger która służy do obsługi dużych liczb
http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1