私のプログラムです。Racket Scheme、戻り値に1を加えますか?
(define (golden n)
(cond
[(equal? n 0) 0]
[else (/ (+ 1 (golden (- n 1)))) ]
))
nはゼロであり、Iは1で結果を返すようにしたいので、黄金比を提示し、それに追加... 1.61 は現在、このプログラムは、約0.61分数などを返します - 私は知りませんどのように1つを追加するには?
私のプログラムです。Racket Scheme、戻り値に1を加えますか?
(define (golden n)
(cond
[(equal? n 0) 0]
[else (/ (+ 1 (golden (- n 1)))) ]
))
nはゼロであり、Iは1で結果を返すようにしたいので、黄金比を提示し、それに追加... 1.61 は現在、このプログラムは、約0.61分数などを返します - 私は知りませんどのように1つを追加するには?
お客様の近似値はgolden ratio - 1
と計算されます。だから、1
の後ろにの後ろに不足分を追加しないでください。また、値を小数に結果を変換するために役に立つかもしれないのは、ちょうどそれを行うためのヘルパーを書いてみましょう(一部通訳がそうであるように、代わりに画分に結果を返す。):
(define (golden n)
(+ 1
(exact->inexact
(golden-helper n))))
(define (golden-helper n)
(cond
[(equal? n 0) 0]
[else (/ 1 (+ 1 (golden-helper (- n 1))))]))
期待どおりに動作します:
(golden 1000)
=> 1.618033988749895
ヘルパー機能を持たないソリューションです。黄金比の継続的な割合は、phi = 1 + 1 /(1 + 1 /(1 + 1/..))です。したがって、各ステップであなたにそうあなたは除算を取得します。また、1への最終的な再帰ステップのreturn文を変更する必要が自動的に
(define (golden n)
(cond
[(equal? n 0) 1]
[else (+ 1 (/ 1 (golden (- n 1)))) ]
))
つを含むx_{n+1} = 1 + 1/x_n
(ないx_{n+1} = 1/(1+x_n)
)として再帰を実装することができますゼロ。