Wieso ist das eine Endlosschleife?

  • Themenstarter Themenstarter HeinrichStol
  • Beginndatum Beginndatum
H

HeinrichStol

Gast
Java:
public int d_berechnung(int m)
	{	
                int d = 1;
		int d1 = 0;
		int a = 0;
		do
		{
			d++;
			System.out.println(d);
			a = ggt(m,d);
			
		}while(a==1);
		
		if(m % d != 0)
		{
			d1= d;
		}
		else
		{
			d++;
			d_berechnung(m);
		}
		return d1;
	}


Java:
public int ggt(int m, int d)
	{
	    if (d==0)
	    {
	        return m;
	    }
	    else
	    {
	        return ggt(d, m % d);
	    }
	}

Ich verstehe nicht wieso das eine Endlosschleife ist!?!?!
Könnt ihr den Fehler finden?
 
Ganz ehrlich, nimm entweder nen debugger oder mach mehr System.out....., dann siehste wos anfängt zu hängen und dann kannste überlegen warum das so ist.
 
@Dekker

Debugger FTW! Danke!

@XHelp

Ist ein anderes Thema... der ggT funktioniert jetzt! Sry... kenn mich in dem forum noch nicht so aus!
 
Ich hab eine kurze Frage zu deinem Code:

Java:
do
        {
            d++;
            System.out.println(d);
            a = ggt(m,d);
            
        }while(a==1);
Wozu hast du hier a==1 ?
 
Ich glaube dein Fehler ist hier:
Java:
if(m % d != 0)
        {
            d1= d;
        }

Das != müsste ein == sein.
Nach ggT erhältst du eigentlich immer eine Zahl die sich modulo 0 mit d teilen lässt.
Die if-Bedingung wird nie erfüllt und du rufst die Methode immer wieder auf.
 
Die Lösung:
Java:
do
		{
			d++;
			System.out.println("d: " + d);
			a = ggt(m,d);
			System.out.println("a: " + a);
			
		}while(a != 1);

while(a != 1) ==> ich wollte d ausrechnen bei dem a == 1 ist!

das ggT stimmt so!
 

Neue Themen


Zurück
Oben