再帰

関数定義や副プログラムのなかで自分自身を利用することができる。
関数定義や副プログラムで自分自身を利用することを再帰という。

例 階乗を計算する関数FACTを定義する。

10 FUNCTION FACT(n)
20  IF n=1 THEN 
30    LET FACT=1 
40  ELSE
50     LET FACT=n*FACT(n-1)
60  END IF
70 END FUNCTION
80 PRINT FACT(10)
90 END

補足説明
n!は,
1!=1
n!=n・(n-1)!
の関係を用いて計算できる。
2! = 2・1! = 2・1 = 2
3! = 3・2! = 3・2 = 6
4! = 4・3! = 4・6 =24
…………
上のプログラムでは,FACT(10)を10*FACT(9)で計算しようとする。
すると,今度はFACT(9)を9*FACT(8)で計算しようとしてFACTの定義部が再度実行される。
これがn=1になるまで繰り返される。

内部関数定義や内部副プログラムでは,仮引数の記憶場所は呼び出されるたびに新しい場所に確保される。(変数引数の場合を除く)
外部関数定義と外部副プログラムでは,呼び出されたとき,仮引数を含むすべての変数が新たに別の場所に確保される。(変数引数の場合を除く)
上述の2つの場合について,呼び出しごとに新たな場所に確保される変数は,呼び出しから戻ったとき元の値に戻される。

外部関数定義では,自身の名称をDECLARE文で宣言する必要はない。

inserted by FC2 system