當我輸入以下內容:我在做什麼錯在Scheme?
(define (root a b c)
(/ (+ (-b) (sqrt (- (exp b 2) (* 4 a c)))) (* 2 a)))
,然後輸入:
(root 3 6 2)
我得到一個消息,表明該程序有兩個論點,但只只需要一個。我究竟做錯了什麼?
當我輸入以下內容:我在做什麼錯在Scheme?
(define (root a b c)
(/ (+ (-b) (sqrt (- (exp b 2) (* 4 a c)))) (* 2 a)))
,然後輸入:
(root 3 6 2)
我得到一個消息,表明該程序有兩個論點,但只只需要一個。我究竟做錯了什麼?
exp
函數確實沒有指數,它做了別的事情。 (我不知道)。
你想通常被稱爲pow
的「權力」,但可能不會在你的環境中定義的,所以我建議你只是定義自己的square
方法是什麼:
(define (square x) (* x x))
然後:
(define (root a b c)
(/ (+ (- b) (sqrt (- (square b) (* 4 a c)))) (* 2 a)))
編輯:哦,你也必須改變一對夫婦間距問題,如(* 4 a c)
代替(*4 a c)
和(- b)
而不是(-b)
。您總是必須用空格將操作符與操作數分開。
爲了好奇,'(exp n)'返回[e](http://en.wikipedia.org/wiki/Euler's_number)^ n。並且Scheme具有權力功能,但它被稱爲'expt' – 2010-07-31 03:40:59
謝謝!這工作。 – Skoolpsych2008 2010-07-31 03:41:32
謝謝邁克爾 – 2010-07-31 05:28:30
錯誤引用的函數是exp
,它只接受一個參數。 exp
函數計算指數函數,而不是指數。你想expt
,這引起了根x
到指數y
:
(expt b 2)
你也可以乘次數本身。
因爲這些基本功能很難保持直線,所以我通常保留R5RS或方案編程語言。
程序exp
將e
的數字提升爲其參數的大小,如果您需要引用另一個參數的大小,請使用expt
。更好的是,由於你只需要平方b
,簡單的乘法就可以了。像這樣:
(define (root a b c)
(/ (+ (- b) (sqrt (- (* b b) (* 4 a c))))
(* 2 a)))
我不假設你有一個'-b'定義的函數;因此,你很可能需要'( - b)'中的'-'和'b'之間的空格。 – Svante 2010-07-31 12:19:05