C Programmierung Zahlenfolge rückwärts ausgeben

Hallo miteinander.

Ich habe ein kleines C Programm entwickelt, um eine Zahlenfolge rückwärts ausgeben zu können. Habe es mit einer wechselseitiger Rekursion probiert.

#include

int ZahlRueckwaerz(int zahl)
{
if(zahl >= 10)
zahl = (zahl%10)*AnzahlStellen(zahl)+ZahlRueckwaerz(zahl/10);

return zahl;
}

int AnzahlStellen(int zahl)
{
int x = 10;
if(zahl/10 >= 10)
x *= AnzahlStellen(zahl/10);

return x;
}

int main()
{
int zahl;

printf(„Eingabe:“);
scanf("%i",&zahl);

zahl = ZahlRueckwaerz(zahl);

printf("%i",zahl);

return 0;
}

Könnte man mein Programm noch etwas optimieren?
Worauf muss ich bei einer Rekursion achten?

Vielen Dank
glg

Hi,

Zahlenfolge rückwärts ausgeben zu können. Habe es mit einer
wechselseitiger Rekursion probiert.

Schau dir mal das folgende mal als Ansatz an

#include 

void zr(unsigned zahl)
{
 (void) printf("%u",zahl%10);
 if (zahl /= 10) 
 zr(zahl);
 else 
 (void) printf("\n");
}

int main()
{
 unsigned zahl = 0;
 (void) scanf("%u",&zahl);
 zr(zahl);
 return 0;
}

und verstehe es.

Im Gegensatz zu deiner Variante gibt diese die Zahl tatsächlich „rückwärts“ wieder, also inkl. führender Nullen (z.B. bei Eingabe von 123000)

Gruss
n.

Hallo,

was soll denn das (void) vor dem printf/scanf? das kann man genau so gut weglassen. Das erhöht auch die Lesbarkeit.

Grüße

Hi,

was soll denn das (void) vor dem printf/scanf? das kann man
genau so gut weglassen. Das erhöht auch die Lesbarkeit.

es sieht so aus, als ob du noch nicht lange C/C++ programmierst, ansonsten wuerde so ein Kommentar nicht kommen. Die meisten Coding Guidelines sehen das explizit vor, weil dort ein evtl. wichtiger Rückgabewert ignoriert wurde.

Es ist also mitnichten so, dass dadurch die Lesbarkeit verringert wird, sondern ganz im Gegenteil: der Leser weiss, dass der Programmierer das mit Absicht so gemacht hat.

Gruss
n.

1 Like