Python :: Aufgabe #272
2 Lösungen
Ein nicht-rekursiver Algorithmus!
Anfänger - Python
von Labi1995
- 19.04.2020 um 20:52 Uhr
Was leistet folgender rekursiver Algorithmus für natürliche Zahlen n mit n>0?
Geben Sie einen nicht-rekursiven Algorithmus an, der dasselbe leistet.
int DoSomething(int n)
{
if (n == 1)
return n - 1;
else
{
if ((n / 2) * 2 == n)
{
return 1 + DoSomething(n - 1);
}
else
{
return DoSomething(n - 1);
}
}
}
Geben Sie einen nicht-rekursiven Algorithmus an, der dasselbe leistet.
Lösungen:
Python-Code
def test_272(n: int): return int(n / 2)
Erzeugt also folgendes:
1 -> 0
2 -> 1
3 -> 1
4 -> 2
5 -> 2
usw.
Python-Code
def doSomething(n: int): if n != int: print('N muss eine ganze Zahl sein!') elif n >= 1: return n - 1 else: print('Die Zahl muss größer gleich Eins sein!') #Der "Algorithmus" rechnet n - 1, er gibt also immer die zu n nächstkleinere ganze Zahl zurück. Theoretisch würde der Code unter Python auch für negative bzw. float Zahlen funktionieren, allerdings würde er dann anders funktionieren als das rekursive Beispiel.