# Applikativer Algorithmuss Wurzel ziehen



## Lucii91 (14. Jun 2012)

Hallo

Wie ihr seht bin ich Einsteiger , bzw. kompletter Neuling in dem Gebiet.

Ich muss morgen für ein Praktikum einen Algorithmus erstellen der das Ziehen von Wurzeln ermöglicht. 

Das ganze applikativ und mit dem Heron-Verfahren.

Imperativ habe ich das ganze schon hinbekommen, aber applikativ pack ichs net.

Wäre euch für eure Hilfe sehr verbunden

Danke im vorraus

Lucas


----------



## Gast2 (14. Jun 2012)

Da helfen wir doch gern:
Heron-Verfahren ? Wikipedia


----------



## Lucii91 (14. Jun 2012)

soweit war ich schon  kenne mich allerdings mit rekursionsprinzip nicht aus.


----------



## Gast2 (14. Jun 2012)

Den Link zur Rekursions-Wikiseite spar ich mir mal.

Hast du ne konkrete Frage? Oder welche Art Hilfe erwartest du dir?


----------



## Lucii91 (14. Jun 2012)

Am besten den Code


----------



## AquaBall (14. Jun 2012)

Zeig mal, was du bisher an Code hast, dann können wir weiter helfen (wollen)!


----------



## Lucii91 (14. Jun 2012)

package Praktikum;

public class Heron {

		public static void main(String [] args) {
		double x;
		double y = 0;
		double a = 3;
		x = a;
		while (x != -1) {
		y = (x + a / x) / 2;
		if (x == y) {
		break;
		}
		x = y;
		}
		System.out.println(y);
		}
}


Das ist mein imperativer Algo. . Aber ich habe kein Plan wie ich einen applikativen erstelle.


----------



## AquaBall (14. Jun 2012)

1) Verwende Java-Tags! [noparse] 
	
	
	
	





```
dein Code
```
 [/noparse]

```
package Praktikum;

public class Heron {
	
	public static void main(String [] args) {
		double x;
		double y = 0;
		double a = 3;
		x = a;
		while (x != -1) {
			y = (x + a / x) / 2;
			if (x == y) {
				break;
			}
			x = y;
		}
		System.out.println(y);
	}
}
```

2) Sollte doch laufen?!

3) (Und hier kenn ich micht nicht genug aus, aber) : 
Wenn du imperativ hast, dass musst du doch nur das in irgendeinem Pseudocode - der irgendwie an Funktionen erinnert - schreiben?
Oder lieg ich da falsch?
Hast du schon einen Ansatz für dein applikatives Modell?


----------



## Landei (15. Jun 2012)

Um Rekursion zu verstehen, muss man erst einmal Rekursion verstehen.


```
public static final double EPSILON = 0.000000001; //gewünschte Genauigkeit

public static double wurzel(double a, double x) {
   double y = (x + a / x) / 2;
   if (Math.abs(x - y) < EPSILON) {  //besser so als x == y 
       return x; 
   } else {
       return wurzel(a,y); // das ist der rekursive Aufruf
   }
}
```


----------



## Crian (15. Jun 2012)

Landei hat gesagt.:


> Um Rekursion zu verstehen, muss man erst einmal Rekursion verstehen.



Das ist signaturwürdig. *schmunzelt*


----------



## HoaX (15. Jun 2012)

Crian hat gesagt.:


> Das ist signaturwürdig. *schmunzelt*


Ehr uralt...


----------

