Flächeninhalt von Papierformaten berechnen

Tenacious

Mitglied
Hallo,

ich soll ein Programm schreiben das per Konsolenparameter eine Zahl zwischen 1 und 10 bekommt und dann den Flächeninhalt eines Papiers in der jeweiligen DIN-Form in mm^2 ausgibt.
Dafür habe ich gegeben, dass ein Blatt der Größe A[X] immer doppelt so groß ist wie eins der Größe A[X-1] und dass DIN-A10 37mm x 26mm groß ist.
Die Berechnung soll einmal iterativ und einmal rekursiv geschehen.

Bisher habe ich folgendes:
Java:
class dinberechnung 
{		
	static int din_a10 = 37*26;

	public static void main(String[] args)
	{
		int i = Integer.parseInt(args[0]);
		
		int output1 = formatIterativ (i);
		System.out.println("Iterativ berechnet: "+output1);
		
		int output2 = formatRekursiv (i);
		System.out.println("Rekursiv berechnet: "+output2);
		
	}
		
	public static int formatIterativ (int x)
	{
		for (int j = 10; j > x; j-- )
		{
			din_a10 *= 2;
		}
		x = din_a10;
			
		return x;
	}
	
	public static int formatRekursiv (int x)
	{

	}
}

Wie das allerdings rekursiv funktionieren soll hab ich keine Ahnung..
Geschweige denn ob die obere Methode überhaupt "iterativ" ist (auf jeden Fall kommen dort richtige Werte raus).
Kann mir hierbei jemand unter die Arme greifen 🙂 ?
 
In deiner iterativen Methode wird die Variable din_a10 verändert. Das ist nicht gut. Was wenn dein Programm mehr als ein Format berechnen soll?

Besser wäre so
Java:
public static int formatIterativ (int x)
    {
        int flaeche = din_a10;
        for (int j = 10; j > x; j-- )
        {
            flaeche *= 2;
        }
        return flaeche;
    }

Und rekursiv sieht das dann so aus
Java:
public static int formatRekursiv (int x)
    {
        if(x == 10) return din_a10;
        else return 2*formatRekursiv(x+1);
    }
 
Und direkt:

Java:
public static int formatDirect (int x) {
    return din_a10 * Math.pow(2, 10-x);
}
 
Erstmal vielen Dank 🙂

Aber was ich allgemein bei den rekursiven Methoden nicht verstehe ist, woher wissen diese wann sie aufhören sollen mit rechnen? (ich hoffe ihr wisst was ich meine^^)
 
Also in diesem Fall sagt die Zeile
Java:
if(x == 10) return din_a10;
der Methode wann sie aufhören soll zu rechnen.
 

Zurück
Oben