C :: Aufgabe #274
1 Lösung
Ein nicht-rekursiver Algorithmus!
Anfänger - C
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:
#include <stdio.h>
#include <math.h>
#include <string.h>
int DoSomething(int zahl);
int DoSomethingElse(int zahl);
int main(void)
{
int Zahl,i;
for (i=1;i<100;i++)
printf("%3d %5d %5d \n", i,DoSomething(i),DoSomethingElse(i));
}
//Lösungsalgorithmus
int DoSomethingElse(int n)
{
if (n==1)
return 0;
else {
return n/2;
}
}
//Wie oft passt die Zahl 2 in n - rekursiv
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);
}
}
}
