2013-10-30 94 views
0
任務的

定義:我必須做出南瓜和魚掛在一根繩子上使用高階過程打印交替圖片

方面:

什麼,是嗎? ==>確定是否使魚或南瓜函數

魚平方==>的功能,使用2個參數

南瓜==>的功能,以與也南瓜魚2個參數

裝飾品==>該追加的所有圖片一起的功能

掛起逐線程==>該掛起所有圖像到一個線程

額外的功能

這個練習我必須用「(如果(奇數? K)魚平方南瓜))「完全一樣

問題

當我執行我的計劃還需要一段時間,然後崩潰,所以我懷疑它被困在一個循環

代碼

(define (fun-string n r) 
    (define (what-is-it k) 
     (if (odd? k) fish-squared pumpkin)) 
    (define (decorations k) 
     (ht-append ((what-is-it k) r r) 
      (decorations (- k 1)))) 
    (hang-by-thread (decorations n))) 

目標

這項工作的目的是學習如何通過谷底的功能參數,一些方案是能夠做到的。

千恩萬謝

編輯*

我已經添加了基準線,還是同樣的問題,這裏是所有代碼:

(define (lampion r l) 
    (vc-append (filled-rectangle 2 l) (pumpkin r))) 

(define (hang-by-string pumpkins) 
    (vc-append (filled-rectangle (pict-width pumpkins) 2) 
      lampionnetjes))  

(define (fish-square wh l) 
    (vc-append (filled-rectangle 2 l) (fish wh wh))) 

(define (fun-string n r) 
    (define (what-is-it k) 
    (if (odd? k) fish-square pumpkin)) 
    (define (decorations k) 
    (if (= k 1) fish-square) 
    (ht-append ((what-is-it k) r r) 
       (decorations (- k 1)))) 
    (hang-by-string (decorations n))) 
+0

你能張貼** **所有? – uselpa

+0

這不是所有的代碼。而你'如果'是錯誤的,在南瓜之後應該沒有右括號,所以'ht-append'在else子句中。 – uselpa

+0

這將是適當的你刪除你的(以後)重複的問題,[我需要做一個更高的順序程序,以掛起南瓜和魚的字符串](http://stackoverflow.com/q/19682559/ 1281433)。 –

回答

1

你還沒有做

(define (decorations k) 
    (if (= k 1) fish-square) ; the results of this line are discarded 
    (ht-append ((what-is-it k) r r) 
      (decorations (- k 1)))) 

,因爲你放棄的結果,因此if語句,返回的

(ht-append ((what-is-it k) r r) 
      (decorations (- k 1))) 

值就像在原代碼中實現uselpa's suggestion。有條件有代碼的形式

(if test 
    then-part 
    else-part) 

所以你需要的是

(define (decorations k) 
    (if (= k 1) 
    fish-square 
    (ht-append ((what-is-it k) r r) 
       (decorations (- k 1))))) 
2

看起來你缺少的基本情況程序decorations。你應該測試k < = 0,然後停止。