当方、情報工学的な教育は受けていません。
そこで、高卒レベルで一から再帰的アルゴリズムを理解するのに適した本をご紹介くださいませ。
実際に、大学で使ったなどの経験者のご紹介だととても助かります。
よろしくお願いいたします。
正直情報系の話しって別に中学生でも分かるものばかりだと私は思います。(そんな難しいことやらないのなら)
再帰的アルゴリズムについては取っつきにくいけどなんの本でも良いから(当たり前だけど再帰的表現のできる言語ね)再帰的アルゴリズムを実装したプログラムを何も考えずに打ち込んでところどこで値を表示できるようにします。次にそれぞれの変数がどのように変化するかを紙の上でプログラムを読みながら書きます。(プログラムが実行される順番通りに書けば良いだけです)
これと先ほど出力してある値とを比較すると再帰的アルゴリズムが分かってくるのではないでしょうか?
紙で書くときに例えばnの階乗を再帰的に計算する関数があったとして
変数がn,再帰的処理をする関数をf(n)=n*f(n-1)(f(1)のとき1を返す)とすると
n=3のとき
n=3 nが1ではないf(3)=3*f(2)
n=2nが1ではない f(2)=2*f(1)
n=1 nが1である f(1)=1
ここまでやれば(ずらして書くとわかりやすい)それぞれの関数の返値を計算してやります。
f(1)=1
f(2)=2*f(1)=2*1=2
f(3)=3*f(2)=3*2=6
という具合になります。このような手順をハノイの塔とかでやってみるともっとよく分かると思います。
http://ews2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Hanoi...
(階乗を計算するのと条件や変数、引数が違うだけ)
ありがとうございます。
ちなみに当方はphpです<へぼい・・・(笑)
URLを参照にやってみたいと思います。
phpですと、各ステップごとにechoしていくのがおそらくよいのですね。
ただできれば数学的な知識も根本から抑えておきたいと思っているのです・・・。
Lisp入門―システムとプログラミング (コンピュータサイエンス大学講座)
PHPとコメントされていましたがリカーシブについて語るなら中西正和さんの「LISP入門」は一読されると良いでしょう。
中西さんは既に亡くなられていますが、アッカーマン関数の最少行数Fortranプログラムでも有名な方です。
ありがとうございます。
ううう・・・、再帰のアルゴリズムを本気でやり始めると、スクリプト言語レベルではうまくいかなそうなのが、わかってきました・・・。
ご紹介いただいた該当書はレア本になっているようなのが残念なのですが、探して読んでみたいと思います。
ありがとうございます。
このレベルになると、魔法の呪文を聴いている気分になってきます・・・(<数学センスなさ杉・・・)。
こういった資料がさくっと読めるようになりたいのです。
おおお!
ありがとうございます!
結城さんがお書きになられているのですね。
さっそく即買いで勉強させていただきます。