0
私はすでにこの問題を複数回試みましたが、それを正しく理解することはできませんでした。正の整数nを入力し、p^2 + q^2 = n
、q^2 = (n - p^2)
、p
でもn - p^2
も1ではない最初の整数pを出力する反復手続きを書くことができます。このようなpが存在しない場合、関数はnを返さなければなりません。 サンプル出力は(dss 65)
で、4を返します。ラケットの反復分解 - 二乗和として
これまでのコードです。
(define (dss n)
(define (sum-of-squares n)
(if (zero? n) 0
(cons (expt n 2)
(sum-of-squares (- n 1)))))
(sum-of-squares 1))
私が手出力は明らかに間違っている
(dss 65) ; (1 . 0)
です。助けてください!
この部分にはsqrtを意味しますか(sqr p)。また、私がテストしたとき(dss 65)、結果は65ではなく4です。 – cschang
いいえ、私は 'sqr'を意味しました。これはラケットに組み込まれた' square'プロシージャです: '(lambda(x)(* x x))'あなたは何かを変えましたか?私のマシン上で動作するので... –
sqr:sqr:undefinedを使用するとエラーが発生します。 は未定義の識別子を参照できません。私は正方形の手続きを書く必要がありますか? – cschang