2012-12-11 56 views
1

我一直試圖找出這樣的2小時現在!請考慮下面的代碼:不是程序,真的嗎?

(define (PowListF list) 
    (PowListFHelp list (- (length list) 1))) 

(define (FuncPow f n) 
    (if (= 0 n) 
     f 
     (lambda (x) 
     (FuncPow (f (- n 1)) x)))) 

(define (PowListFHelp list n) 
    (if (= n 0) 
     (list (list-ref list 0)) 
     (cons (FuncPow (list-ref list n) n) 
      (PowListFHelp list (- n 1))))) 

火箭計劃的編譯器給我的錯誤: 應用程序:不是一個程序; 預期可應用於參數 給出的過程:(##) 參數...: #

和它所指向的(利弊部分...

和下面的代碼,即採用相同的,如果結構不工作:

(define (polyCheb n) 
    (reverse (polyChebHelp n))) 

(define (polyChebHelp n) 
    (if (= n 0) 
     (list (polyChebFunc n)) 
     (cons (polyChebFunc n) 
      (polyChebHelp (- n 1))))) 

(define (polyChebFunc n) 
    (if (= n 0) 
     (lambda (x) 1) 
     (if (= n 1) 
      (lambda (x) x)  
      (lambda (x) 
      (- (* (* 2 x) 
        ((polyChebFunc(- n 1)) x)) 
       ((polyChebFunc(- n 2)) x)))))) 

編輯:PowListF報錯的函數列表爲參數,返回相同的列表ST每個功能是由與自身(其索引+ 1)倍...

用法: ((list-ref(PowListF(list(lambda(x)x)(lambda(x)(expt x 2))))1)2) 值應該是2^2^2 = 2^4 = 16

編輯2:

這是溶液:

(define (FuncPow f n) 
    (if (= 0 n) 
     f 
     (lambda (x) (f ((FuncPow f (- n 1)) x))))) 

回答

2

問題在於:(FuncPow(f (- n 1)) x)

主叫f必須是過程的結果(I假設這是你返回一個程序)。

您進一步'分配'f爲:(list-ref list n)

+0

它確實返回過程不呢? –

+0

看我的編輯。用法。 – leppie

+0

我的assumptaion是該列表是程序列表,所以(list-ref list n)是在索引n處的程序.... –

相關問題