Uns ein anderes Beispiel sehen lassen. Das folgende Beispiel verwendet eine Funktion, die Quadrat genannt wird, das das Quadrat der Zahlen zwischen 1 und 10 schreibt.
#include <stdio.h>
int square(int x); /* Funktion Prototyp */
int main()
{
int counter;
for (counter=1; counter<=10; counter++)
printf("Square of %d is %d\n", counter, square(counter));
return 0;
}
/* Define the function 'square' */
int square(int x)
{
return x * x;
}
Der Ausgang dieses Programms wird angezeigt, wie folgt:
Square of 1 is 1
Square of 2 is 4
Square of 3 is 9
Square of 4 is 16
Square of 5 is 25
Square of 6 is 36
Square of 7 is 49
Square of 8 is 64
Square of 9 is 81
Square of 10 is 100 |
Das Funktion Prototypquadrat erklärt eine Funktion, die einen Ganzzahl Parameter nimmt und eine Ganzzahl zurückbringt. Wenn der Compiler den Funktion Anruf zum Quadrat im Hauptprogramm erreicht, ist es in der Lage, den Funktion Anruf gegen die Definition der Funktion zu überprüfen.
Wenn das Programm die Linie erreicht, die das Funktion Quadrat benennt, springt das Programm zur Funktion und führt diese Funktion durch, bevor es seinen Weg durch das Hauptprogramm wieder aufnimmt. Programme, die nicht eine Rückholart haben, sollten mit Lücke erklärt werden. So können Parameter zur Funktion Durchlauf durch Value oder Durchlauf sein durch Reference.
Eine rekursive Funktion ist eine Funktion, die sich benennt. Und dieser Prozeß wird Rekursion genannt.
Durch Value Functions überschreiten
Die quadratischen Parameter der Funktion im vorhergehenden Beispiel werden durch Wert geführt. Dies heißt, daß nur eine Kopie der Variable zur Funktion geführt worden ist. Keine änderungen am Wert werden nicht zurück zu der benennenden Funktion reflektiert.
Das folgende Beispiel verwendet Überschreiten-durchwert und ändert den Wert des geführten Parameters, der keinen Effekt auf der benennenden Funktion hat. Das Funktion count_down ist erklärte so Lücke gewesen, da es keine Rückholart gibt.
#include <stdio.h>
void count_down(int x);
int main()
{
int counter;
for (counter=1; counter<=10; counter++)
count_down(counter);
return 0;
}
void count_down(int x)
{
int counter;
for (counter = x; counter > 0; counter--)
{
printf("%d ", x);
x--;
}
putchar('\n');
}
Der Ausgang des Programms wird angezeigt, wie folgt:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1 |
|