初めて&のスキームで実行すると、Leibniz formulaを使用してpiを計算する単純な再帰関数を作成しようとしています。この手順は、必要とされる精度を取り込み、適切なパイ近似を返す。例えばpi&scheme構文の系列近似の計算
:0.001-PI作る - > 3.14109 ...
イムは、しかし、構文に追いついたと戻り/スキームの変数を呼び出すための構文で失われた、適切な方法だばかり。
; Define count for number of loops, sum for pi estimate, and num/denom for calculating estimation in series
(define count 1.0)
(define sum 4.0)
(define denomenator 3.0)
(define numerator 4.0)
; make-pi gets accuracy needed as input ie (make-pi 0.001 => 3.1410926536210413
(define make-pi
(lambda (accuracy)
; determine if next fraction will be + or - based on number of iterations thus far
(if (zero? sign count)
; add fraction if odd, subtract otherwise
(+ sum (/ numerator denomenator))
(- sum (/ numerator denomenator)))
(define (check-accuracy sum)
; use check accuracy with current sum
(if (zero? check-accuracy)
;return sum if within needed accuracy
sum
; update count and new denom values if not accurate enough
; loop back if sum is not accurate enough
(begin
(+ count 1)
(+ denomenator 2)
(make-pi (sum)))))))
; if interation is even return 1 else 0
(define sign
(lambda (count)
(if (even? count))
1
0))
; if pi - sum is within desired accuracy, return 1 else 0
(define check-sum
lambda (sum)
(define check-accuracy
lambda (accuracy)
(if ((- 3.14159265358979 sum) < (abs(accuracy))))
1
0))
ラケットは、実際にコードをフォーマットします。あなたの質問は何ですか? – Sylwester
@Sylwesterありがとう、よく知っておいてください。私は構文を訂正しようとしています。例えば、系列を通るときに正しい分数を与えるためにsign手続きを使用する。変数を正しく定義していることを確認します。 – Silverfin