# Funktion iterativ



## nds (12. Dez 2013)

Guten Tag, ich habe folgendes Problem:
eine Funktion 4*f(n-3)-5 muss man irgendwie iterativ darstellen, 
rekursiv bleibt sie wie sie ist, aber wie mache ich die iterativ, also mit Schleifen?


----------



## VfL_Freak (12. Dez 2013)

Moin,

zeig' mal erst, was Du bisher hast ....

Gruß
Klaus


----------



## nds (12. Dez 2013)

VfL_Freak hat gesagt.:


> Moin,
> 
> zeig' mal erst, was Du bisher hast ....
> 
> ...



Moin, bisher habe ich eine rekursive Lösung:

public static int f(int n) {
if (n <= 0) return 1;			
else if (n == 1) return 2;	   
else return  4*f(n-3)-5; 
}

wie kann man die in iterative umwandeln? 
Gruß


----------



## anti-held (12. Dez 2013)

```
public static int fIterativ(int n) {
		int tmp = n % 3 == 1 ? 2 : 1;
		for (int i = 2; i <= n; i += 3) {
			tmp *= 4;
			tmp -= 5;
		}
		return tmp;
	}
```

löst dein Problem iterativ.

ab n=47 ändert sich der Value aber nicht mehr, weil durch den Überlauf bei der Multiplikation und das anschließende Abziehen von 5 wieder die Gleiche Zahl entsteht.


----------



## nds (12. Dez 2013)

anti-held hat gesagt.:


> ```
> public static int fIterativ(int n) {
> int tmp = n % 3 == 1 ? 2 : 1;
> for (int i = 2; i <= n; i += 3) {
> ...



ja, das hat super geholfen, danke!:toll:


----------

