Fakultät Programm !

  • Themenstarter Themenstarter Ludacriz
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
L

Ludacriz

Gast
Hi Leute,

wir haben gestern in der Schule mit Java angefangen und wir sollten als Hausaufgabe ein Fakultätprogramm schreiben. (1*2*3*4*5*6*...*n)

Hier ist der Quelltext:

Code:
class Kokolores
{
 public static void main(String args[])
  {
   int a,b;
   b=1;
   quadrat(a,b);
   System.out.println("Ergebnis:"+b);      //printf Befehl
  }

int quadrat(int a,int b)   //Dieses quadrat ist eine Methode,wenn Quad dann kein Static
  {
    for(a=1;a<=4;a=a+1)
    {
     b=b*a;
    }
    return b;
  }
}


Könnt ihr mit bitte sagen wo der Fehler ist, denn der Compiler spuckt mir das aus:

"quadrat(int,int) in Kokolores cannot be applied to (int)"


ok Danke im Vorraus

Cya
 
-Die Methode ist nicht statisch, also kannst du sie aus einem statischen Kontext heraus nicht aufrufen
-a ist nicht initialisiert
-wofür ist überhaupt das b?
-ich versteh überhaupt nicht was dein Programm da berechnen soll ???:L

-genau die richtige aufgabe um sich mit dem Konzept der Rekursion zu beschäftigen :wink:
Code:
    public static void main(String[] args)
    {
        System.out.println(faculty(5));

    }

    private static int faculty(int i)
    {
        if(i==1)
            return 1;
        return i*faculty(i-1);
    }
 
Code:
public class Kokolores { 
  public static void main(String[] args) { 
    int a,b;
    b=1; 
    a = quadrat(b); 
    System.out.println("Ergebnis:"+a);      //printf Befehl 
  }

  static int quadrat(int b) {  //Dieses quadrat ist eine Methode,wenn Quad dann kein Static 
    for (int a=1; a<=4; a++) {
      b=b*a; 
    }
    return b;
  }
}

- Wieso heißt die Methode quadrat wenn es doch um Fakultäten geht?
- Die Methode rechnet weder Quadrate noch Fakultäten aus sonder

quadrat(n) ::= 4! * n

:shock: :autsch:
 
Wildcard hat gesagt.:
-genau die richtige aufgabe um sich mit dem Konzept der Rekursion zu beschäftigen :wink:
Richtig (*)!

Ich verstehe gar nicht warum so viele von euch etwas dagegen haben,
Programmieranfängern die Rekursion anhand der Fakultäts-Funktion
nahezubringen.

Sie ist nun mal leicht rekursiv zu definieren und extremst einfach nachzuvollziehen.
Daß sie draußen in der realen Welt seltenst rekursiv definiert werden
soll und wird, tut den Anfängern kein Abbruch.

Allerdings plädiere ich dafür, nach Verständnis der rekursiven Fakultätsberechnung,
auf deren Nachteile hinzuweisen und dazu eine vernünftige Anwendung der
Rekursion einzuführen; wie z.B. die Lösung der Türme von Hanoi an denen man
sehen kann, wie elegant Rekursion einzusetzen ist (3-Zeiler) wenn es keine,
auf der Hand liegende, iterative Lösung gibt.



(*) Nein, kein Smiley! Ich mein's Ernst!
 
da komm ich mit meim uni-java gerade recht...wenns auch zu sonst nix zu gebrauchen ist :? .
eine Iterative Lösung ginge ungefähr so
Code:
public class iFak
{
	private static int faculty(int obergrenze)
	{
		int result = 1;
		int counter = 1;
		int max = obergrenze;
		
		while (counter <= max)
		{
			result = result * counter;
			counter = counter + 1;
		}
		
		return result;
	}
	
	public static void main(String[] args)
	{
		System.out.println(faculty(5));
	}
}

Ich fand Rekursion immer n bisschen schwieriger zu verstehen als iterative Lösungen. Mag sein dass sie eleganter oder kürzer sind, aber sie sind auch viel speicher-intensiver :wink:

mfg
 
Rekursion bietet für viele iterativ kaum lösbare Probleme einen extrem eleganten Lösungsweg.
Rekursion ist eins der wichtigsten Konzepte für Algorithmen, das sollte man als Entwickler also wirklich beherrschen...
Sobald man sich die Denkweise angeignet hat ist es übrigens leichter zu verwenden als Iteration, da ein großes Problem in viele kleinere Probleme aufgeteilt wird, bis die Lösung trivial ist.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben