掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
再帰の中のResultの取得の方法するには? (ID:35039)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 最初のResultの値 一番深い再帰の時のaの値を文字列として戻り値にしたいのであれば torさんのコードがそれを実現しています。 >再帰を抜ける時は、Resultの内容が消えるんですね。 "戻り値が有効に使われていない" というのが正しいかもしれません。 ですから、'13' を得るだけだったら function TForm1.Reflexive(var a : Integer): String; var v: Integer; procedure _Reflexive(var a : Integer); begin a := a + 1; if a < 10 then _Reflexive(a) else a := a + 3; end; begin v := 0; _Reflexive(v); result := v; end; このように再帰は関数でなく手続きでいい事になります。 再帰は主に値を列挙する用途に使います。 列挙を伴わないで条件になるまで繰り返して単一の値を得たいのであれば、 function TForm1.Reflexive(a : Integer): String; var i: Integer; begin i := a; repeat i := i + 1; until (i = 10); result := IntToStr(i + 3); end; このように再帰ではなくループで処理可能です。 # "再帰でなければならない理由" を書いて頂けると、 # YouEさんの 意に沿ったレスが付くと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.