Reihenentwickung

Status
Nicht offen für weitere Antworten.

loxa789

Mitglied
Ich soll eine Reihenentwicklung machen. 1+3-5+7-9 .....n

Hört sich ja mal ganz einfach an. Bekomme aber je nach dem ich stw auf 0 oder 2 setzt immer für den positiven oder negativen Teil einen Falschen Wert. Da ich das Programm dann in eine Rekusion umschreiben soll will ich es so kurz wie möglich halten. Danke für eure hilfe


Code:
public class ReihenBerechnungInterative {
  public static void main(String[] args) {
  	int n=0;
  	n=In.readInt();
  	int cnt=0;
  	int stw=0;
  	int erg=0;
  	int cnt2=0;

  	while(n>cnt){

	  if(cnt%2==0){

		  cnt2=(cnt+(cnt-1));

		  erg=(stw-cnt2);

		  System.out.println("		"+erg+" = "+stw+" - " +cnt2);
		  stw=erg;;
		  cnt++;

	  }else{

		  cnt2=(cnt+(cnt-1));

		  erg=(stw+cnt2);
		  System.out.println("		"+erg+" = "+stw+" + " +cnt2);
		  stw=erg;
		  cnt++;

	  }
		System.out.println(erg);
	}
  }
}
 

Maeher

Bekanntes Mitglied
Du könntest mal kommentieren, was für Reihen du allgemein berechnen willst. Mir ist der ganze Alghoritmus ziemlich schleierhaft.
Edit: Müsstest du nicht, damit das irgendwie logisch wird 1-3+5 oder -1+3-5 schreiben?
Z.B. sagst du nicht was stw ist (dem du verschiedene Werte zuweist?). ???:L
 

loxa789

Mitglied
Danke für die schnelle Antwort stw ist mein Startwert ich möchte eine Reihe berechnen die bei 1 beginnt.
also die reihe sollte lauten 1+3-5+7...n

bei n =11 stimmt zwar das endergebniss aber jeder zweite zwischenschritt ist falsch.

hier meine Ausgabe.

1 Stimmt
2 müsste 4 sein
-1 Stimmt
4 müsste 6
-3 Stimmt
6 müsste 8
-5 Stimmt
8 10
-7 Stimmt
10 12
-9 Stimmt
 

loxa789

Mitglied
So nun habe ich mal die Hälfte geschafft und die interative form zum laufen gebracht.
Vielleicht kann mir einer bei der Rekusiven form weiterhelfen glaube nicht, dass ich es ohne eure hilfe schaffen werde


Code:
public class ReihenBerechnungInterative {
  public static void main(String[] args) {
  	int n=0;
  	n=In.readInt();
  	int cnt=0;
  	int stw=0;
  	int erg=0;
  	int cnt2=0;


  	while(n>cnt){

	  if(cnt%2==0){

		  cnt2=(cnt+(cnt-1));
		  erg=(stw-cnt2);
		  stw=erg;
		  cnt++;

	  }else{

		  cnt2=(cnt+(cnt-1));
		  erg=(stw+cnt2)+2;  // hier war mein fehler
		  stw=erg-2; // werd muss wieder zurückgesetzt werden sonnst stimmt der andere teil nicht
		  cnt++;

	  }
		System.out.println(erg);
	}
  }
}
 

Maeher

Bekanntes Mitglied
Nach dem ersten Schritt must du immer nur folgendes rechnen:
Code:
int x;
for(int i=0;i<10;i++){
   x*=-1;
   if(x>0){
      x+=2;
   }else{
      x-=2;
   }
   System.out.println("Folgenglied="+x);
}
Ich hoffe ich hab's verstanden
 

Pappenheimer++

Bekanntes Mitglied
Code:
class Testklasse 
{

	public static void main(String args[])
	{
		int n=11; //oder was auch immer
	    System.out.println(reiheRek(n,1,1));
	     System.out.println("--------------");
		System.out.println(reiheIt(n));

	}
	private static int reiheRek(int n, int sum, int i)
	{
		System.out.println(sum);
		if(i==n)
			return sum;
		if(i%2!=0)
			return reiheRek(n,sum+=2*i+1,++i);
		else
			return reiheRek(n,sum-=2*i+1,++i);
	}
	private static int reiheIt(int n)
	{
	     int sum=1;
	     for(int i=1; i<n; i++)
	     {
	    	 System.out.println(sum);
	    	 if (i%2!=0)
	    		 sum+=2*i+1;
	    	 else
	    		 sum-=2*i+1;
	     }
	     return sum;
	}
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben