再帰処理
なでしこで再帰処理は負担が大きいかもませんが、便利なのでたまに使ってます。
たまに使うと動作を忘れて「あれれっ」と思う結果になる事があります。
ミスが多いのは、戻るの動作です。
直前に呼び出した関数の呼び出し行の次の行に戻るだけなのですが。
全ての関数から抜けると勘違いしてよくミスします。
(ネストはスタック処理なので冷静に考えれば当然なのですが)
重い処理を再帰で行う場合は入れ子の深度は深すぎるエラーが出ず。終了するので注意が必要です。
ちなみに他のアプリが複数動いていましたが、以下のコードで612階層までネストできました。
説明文を表示。 初期値=0。 初期値で再帰テスト。 ●再帰テスト(Iで) 1秒待つ 母艦 = 呼出関数番号に1を直接足す。 //A Iに1を直接足す。 //A Iが10未満ならば、Iで再帰テスト。 //A 1秒待つ //B 母艦 = 呼出関数番号から1を直接引く。//B 戻る。 //B ●説明文 「タイトルバーには実行中関数の番号{~}」& 「(入れ子の深度)が表示されています。{~}{~}」& 「『戻る』命令は関数から処理を抜け処理結果を戻します。{~}」& 「このように関数が入れ子になっている場合{~}」& 「『戻る』は現在実行されている関数からのみ処理を抜けます。{~}{~}」& 「再帰テスト関数は、関数内から自身を9回呼び出して戻ります。{~}{~}」& 「Aを10回実行した後、Bが10回実行されます。{~}」& 「戻る位置は関数を呼び出した命令行の{~}」& 「直後と言うのは通常の呼び出しと変わりません。」で戻る