匿名質問者

schemeの条件分岐(if)の書き方についての質問です。

(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:(上に載せたコード)
というエラーが出てしまいます。
自分ではいくら見てみても上記のコードのどこが文法的におかしいのかが分からないので、教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2016/08/19 18:12:31

ベストアンサー

匿名回答2号 No.2

then_value のところで begin がないからエラーになってるんじゃないでしょうか。

他4件のコメントを見る
匿名質問者

ありがとうございます。
気づきませんでした。

2016/08/19 18:12:24
匿名回答2号

この手の質問は匿名質問ではなく通常の質問にした方が良いと思います。
ID が晒されると回答者の回答履歴も分かりますから、変なちゃちゃが入っても知っている人が書いているのかどうか、すぐに分かります。
回答者側から見ると、過去の質問履歴が見られますから、どの程度まで分かっている人なのかが分かりますから、回答のレベルを調整しやすいです。

2016/08/19 22:49:36

その他の回答1件)

匿名回答1号 No.1

この質問では明確な回答をすることが出来ません。
こういった質問をする場合には、実際にエラーを発現するコードを貼ってください。 直接的にエラーである箇所を処理系は報告しますが、前提となる考え方が間違っている場合などには他の部分に要因がある可能性もあります。 自分が原因を特定できないでいるのに、自分で情報を取捨選択するべきではありません。

匿名質問者

質問者から

匿名質問者2016/08/19 12:15:24

これがエラーの出るコードです。(注釈に変換されてしまうので、ここに載せるときに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)

匿名回答2号 No.2

ここでベストアンサー

then_value のところで begin がないからエラーになってるんじゃないでしょうか。

他4件のコメントを見る
匿名質問者

ありがとうございます。
気づきませんでした。

2016/08/19 18:12:24
匿名回答2号

この手の質問は匿名質問ではなく通常の質問にした方が良いと思います。
ID が晒されると回答者の回答履歴も分かりますから、変なちゃちゃが入っても知っている人が書いているのかどうか、すぐに分かります。
回答者側から見ると、過去の質問履歴が見られますから、どの程度まで分かっている人なのかが分かりますから、回答のレベルを調整しやすいです。

2016/08/19 22:49:36

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません