Python :: Aufgabe #272

2 Lösungen Lösungen öffentlich

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?

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:

1 Kommentar
1x
vote_ok
von Marty3000 (680 Punkte) - 04.11.2020 um 21:30 Uhr
Quellcode ausblenden 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.
vote_ok
von Kryptonos (180 Punkte) - 06.11.2020 um 18:19 Uhr
Quellcode ausblenden 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.
1994579

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.