1
私は基数と指数nを取るラケットで "遅い"指数関数を作成しようとしています。私はこの関数を作成して、それ自身でベースを掛けることで答えを得ることができます。私は、リストの作成は私の答えを得るための最良の方法だと思いますが、私はいくつかの問題に実行しているよ:与えられた基底と指数のパラメータ、自分自身のexpt関数を作成したい
(define (slow-expt base n)
(local [(define listn (make-list n base))]
(cons (* (- base 1) (first listn))
(slow-expt base (rest listn)))))
私のエラーは*が2番目の引数は数であることを想定しているが、それは与えられるべきである(最初のリスト)。アドバイスの言葉?
引数 'N'は、いくつかの整数であることを期待、しかし、あなたの再帰呼び出しは、その位置にリストを渡しています。したがって、2度目の '(make-list n base)'が評価されると、 'n'がリストになるのでエラーを投げます。また、すべての再帰関数は基底ケースを必要とします。基本ケースは、反復処理の対象によって異なります。 – assefamaru