Wie schreiben Sie ein Rekursives Programm drucken
Gurus,
Möchte ich wissen, wie man schreiben Sie eine rekursive Funktion, druckt
1
12
123
1234
...
......
Für zB: - Anzeige(4) drucken
1
12
123
1234
Code
#include <stdio.h>
void print(int n)
{
if(n != 0)
{
print(n-1);
printf("\n");
print(n-1);
printf("%d",n);
}
}
int main()
{
print(3);
}
Ausgabe
1
12
1
123
Fragen
Ich schreiben wollte reinen rekursive (ohne Schleife) Funktion aber nicht in der Lage zu filtern unerwünschte Ausdrucke.
Hoffe, jemand wird mir helfen!!!
Update
Danke an alle für die Antworten.Aus allen Kommentaren, die gegeben wurden, wie es scheint, können wir schreiben, die man nur mit Rekursion und einer Schleife erforderlich ist.
- Sie finden in Zukunft @Manu, dass Sie erhalten viel mehr Hilfe, wenn wenn Sie Sie bitten, eine Frage, die Ihr können zeigen, dass Sie haben zuerst versucht, etwas zu tun, was sich in code - möglicherweise posting einige Beispiel-code, den Sie haben, der nicht funktioniert. Wie ist deine erste Frage hier ist es gut sein könnte, Lesen Sie die FAQ stackoverflow.com/faq
- einfach ausgedrückt: Was Haben Sie Versucht,
- Wie zu öffnen auf diese Frage?
- Um erneut eine Frage, nachdem du aktualisiert hast, und befestigte Sie die Gründe, warum es geschlossen war, dann "Flagge" für moderator Aufmerksamkeit. Daneben ist es wie die anderen und erklären, warum Sie wieder aufgenommen werden sollten.
- Wird Sie akzeptieren, um zwei Funktionen haben, oder tut es eine einzelne Funktion?
- Es hat eine einzige rekursive Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Definieren Sie eine rekursive Funktion, müssen Sie drei Dinge tun:
Daher, enden wir mit folgendem Algorithmus:
EDIT: OK, ich verbesserte meine Antwort mit den Richtlinien von @lc.
Wir halten Aufruf PrintIt() mit dem argument-1 rekursiv bis x < 1. Jeder Anruf wird dann wieder in umgekehrter Reihenfolge, wenn x < 1. Bei jeder Rückkehr wir drucken eine Zeile, beginnend mit 1, x.
Die rekursive Funktion wird hier verwendet, wird func(int).
Zunächst wird der Wert übergeben wird aus der main () - Programm.
Die Rekursion tritt auf, bis wir erreichen die exit-Bedingung , die val=0 in diesem Fall.
Wenn wir erreichen, dass die Ebene , verschieben wir das vorletzte frame, a print "1". Dem gleichen Muster folgt zu erreichen die Reihenfolge "1 2". . . "1 2 3" . . . "1 2 3 4"
Nur zum Spaß, hier ist eine rein rekursive Lösung. Es ist in python praktisch schon pseudocode sowieso. (Nicht-pythonic Zeilenumbrüche sind zur besseren übersicht).
Dies ist einfach, nicht wahr?
Diese Frage ist ziemlich alt, doch keine der Antworten, die Antwort auf die eigentliche Frage, viz. die Lösung des Problems in C mit Rekursion nur ohne explizite Schleifen.
Hier ist eine einfache Lösung, erhalten durch die Festsetzung der Missverständnisse in der original-code (Verwirrung zwischen zwei möglichen Funktionen von "drucken"). Es gibt keine expliziten Schleifen.