私達を別の例を見ることを許可しなさい。 次の例は1と10間の数の正方形を書く正方形と呼ばれる機能を使用する。
#include <stdio.h>
int square(int x); /* 機能プロトタイプ */
int main()
{
int counter;
for (counter=1; counter<=10; counter++)
printf("Square of %d is %d\n", counter, square(counter));
return 0;
}
/* 定義しなさい機能「正方形」を */
int square(int x)
{
return x * x;
}
このプログラムの出力は次の通り表示される:
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 |
機能プロトタイプ正方形は整数変数を取り、整数を戻す機能を宣言する。 編集者が主要なプログラムの正方形に関数呼出しに達するとき、それは関数定義に対して関数呼出しを点検ことはできる。
プログラムが機能正方形を呼ぶラインに達するとき、プログラムは機能に跳び、道を再開する前に主要なプログラムによってその機能を実行する。 帰りのタイプがないプログラムは空間を使用して宣言されるべきである。 従って機能への変数はValueによってパスReferenceによって行うかもしれない。
帰納的関数はそれ自身を呼ぶ機能である。 そしてこのプロセスは回帰と呼ばれる。
マンセルバリュー関数によるパス
前例の正方形機能の変数は価値を渡される。 これは変数のコピーだけ機能に通じたことを意味する。 価値へのどの変更でも呼出し機能に戻って反映されない。
次の例は渡によ価値を使用し、呼出し機能に効果をもたらさない渡された変数の価値を変える。 ずっと機能count_downは帰りのタイプがないと同様に宣言された空間である。
#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');
}
プログラムの出力は次の通り表示される:
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 |
|