第1章(2)

SICP読書の進捗。エントリタイトルの括弧内の数字はこのブログで書くときの通し番号であって本のページなどとは関係ないです。すでに前回ちょっと書いたので今日は(2)ということで。

なんかだんだん難しくなってきた。問題1.13とか数学の証明問題になってる。

問題1.11

これはそんなに難しくない。fib-iterを真似すればよい。

問題1.12

もう少し問題をはっきり書いてほしいかも。最初は行にある数字のリストを返す関数を作る(5を入れたら'(1 4 6 4 1)が返るもの)を考えてしまった。まだリストの作り方は出てきていないのでここではそんな高度なものは必要ない。上から何番目、左から何番目かの数値を入れたらその場所の値が返るものを作ろう。

1:      1
2:     1 1
3:    1 2 1
4:   1 3 3 1
5:  1 4 6 4 1

に対し、

(f 1 1) ; → 1
(f 3 2) ; → 2
(f 5 4) ; → 4

という動作になればよい。これならそんなに難しくない。

問題1.13

もうプログラム関係なし。単なる数学の問題。

数学的帰納法とか久しぶりだ。忘れた人はWikipediaの説明を見よう。今回は以下のことが言えればよい。

  1. n=1のとき正しい。
  2. n=2のとき正しい。
  3. n=kのとき正しい、かつn=k+1のとき正しいならば、n=k+2のとき正しい。

1と2は簡単。3を証明するには以下のことを使う。
\frac{3+\sqrt{5}}{2}=\frac{6+2\sqrt{5}}{4}=\frac{(1+\sqrt{5})^2}{2^2}=\phi^2

てか3ページしか進んでないのか...。