(if (or (= e 1) (> d f))
(display 【素因数が入っているリスト名】)
(if (= 0 (modulo e d))
((cons d 【素因数が入っているリスト名】)
(【この関数】 d (/ e d) f))
(【この関数】 (+ d 1) e f))))
scheme(Racket)で素因数分解をするプログラムを作っています。この関数はその一部で2、3、4・・・で割り算を繰り返すというものです。
しかし実行すると
if: bad syntax;
has 4 parts after keyword in:(上に載せたコード)
というエラーが出てしまいます。
自分ではいくら見てみても上記のコードのどこが文法的におかしいのかが分からないので、教えてください。
then_value のところで begin がないからエラーになってるんじゃないでしょうか。
この質問では明確な回答をすることが出来ません。
こういった質問をする場合には、実際にエラーを発現するコードを貼ってください。 直接的にエラーである箇所を処理系は報告しますが、前提となる考え方が間違っている場合などには他の部分に要因がある可能性もあります。 自分が原因を特定できないでいるのに、自分で情報を取捨選択するべきではありません。
これがエラーの出るコードです。(注釈に変換されてしまうので、ここに載せるときに5行目の括弧は全角にしています)
(define primefactor '(1))
(define (division d e f)
(if (or (= e 1) (> d f)) (cons f primefactor)
(if (= 0 (modulo e d))
((cons d primefactor)(division d (/ e d) f))
(division (+ d 1) e f))))
(division 2 24 24)
then_value のところで begin がないからエラーになってるんじゃないでしょうか。
ありがとうございます。
気づきませんでした。
この手の質問は匿名質問ではなく通常の質問にした方が良いと思います。
ID が晒されると回答者の回答履歴も分かりますから、変なちゃちゃが入っても知っている人が書いているのかどうか、すぐに分かります。
回答者側から見ると、過去の質問履歴が見られますから、どの程度まで分かっている人なのかが分かりますから、回答のレベルを調整しやすいです。
ありがとうございます。
2016/08/19 18:12:24気づきませんでした。
この手の質問は匿名質問ではなく通常の質問にした方が良いと思います。
2016/08/19 22:49:36ID が晒されると回答者の回答履歴も分かりますから、変なちゃちゃが入っても知っている人が書いているのかどうか、すぐに分かります。
回答者側から見ると、過去の質問履歴が見られますから、どの程度まで分かっている人なのかが分かりますから、回答のレベルを調整しやすいです。