Funktion soll nicht bis Null laufen
-
Hallo, wie verhindere ich das die Funktion bis zu Null läuft? Die Funktion soll bloß die geraden Zahlen zusammenzählen, an 'n' wird immer eine positive Zahl übergeben.
double summe(int n, double v[]){ if(!n) return 0; else return v[n] + summe(n-2, v); }
-
Bei einer ungeraden Zahl trifft deine Abbruchbedingung nicht zu - du solltest lieber auber auf n<=0 testen.
(oder mach's iterativ mit einer Schleife)
-
v[n] ist falsch, weil v[n] ausserhalb des arrays liegt.
-
c.rackwitz schrieb:
v[n] ist falsch, weil v[n] ausserhalb des arrays liegt.
wo kannste das denn sehen?
-
mata^ schrieb:
c.rackwitz schrieb:
v[n] ist falsch, weil v[n] ausserhalb des arrays liegt.
wo kannste das denn sehen?
ich bin Gott.
nee echt, wenn n die laenge des arrays sein soll, dann kannst du nur von [0] bis [n-1] zugreifen. in c faengt man naemlich bei null mit zaehlen an.
-
wenn summe() die felder mit geraden indizes bis maximal index n des arrays v[] aufsummieren soll, dann kann man das so machen
double summe(int n, double v[]){ if(n==0) return v[0]; else return v[n] + summe(n-2, v); }
der parameter n muß >=0 und gerade sein.
-
sagte ich nicht grade, dass v[n] ausserhalb des arrays liegt?
-
du bist nicht gott => wissen kannst du es nicht. es hängt doch einfach davon ab, was er mit n übergibt.
-
es gibt gewisse konventionen, und wenn ich von den ueblichen ausgehe, dann ist n die laenge des arrays, welches von [0] bis [n-1] elemente besitzt.