掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
再帰の中のResultの取得の方法するには? (ID:35036)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
再帰の中に、Resultがあると、再帰の分だけ、Resultが返るんですか? function TForm1.Reflexive(var a : Integer): String; var i : Integer; begin {1} a := a +1; {2} if a < 10 then Reflexive(a); {3} a := a +3; {4} Result := IntToStr(a); {5} Memo1.Lines.Add('★' + IntToStr(a)); end; こいつを呼び出すと、 ★13★16★19★22★25★28★31★34★37★40 となり、最終的な戻り値が 40 になるのは、なんででしょうか? {2}で再帰で、止まりますよね? {2}の条件を抜けた時に、{3}から再帰の数だけ、繰り返されるんですよね? なんか、無駄な気がするんですが、必要な場合もあるのか。 いや、再帰の中で、Resultが必要で、どうも求めているのと違うと思ったら、{5}が繰り返されていた、始めて気が付きました。 で、本題なのですが、これの戻り値を、最初の13にするにはどうしたらいいのでしょうか? そもそも書き方が、間違っているのでしょうか? よろしく御願い致します。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.