2014-02-17 73 views
0

這是尾遞歸嗎?我認爲這是但我不確定。另外,如果我輸入一個列表(1 2 3)運行該程序,它的輸出是(4 3 2)。這是爲什麼 ?任何幫助將不勝感激。 謝謝。這是什麼樣的遞歸?

 (define (add1-iter a-list) 
    (define (add1-helper curr-list result-list) 
    (if (null? curr-list) 
     result-list 
    (add1-helper (cdr curr-list) 
       (cons (add1 (car curr-list)) 
         result-list)))) 
    (add1-helper a-list '())) 
+2

爲什麼你編輯你的問題以刪除所有的代碼,在Sylwester花時間爲你回答之後? –

+0

我剛回滾編輯以恢復代碼。 –

回答

3

它是尾遞歸。

您有一個累加器(結果列表),當您從源頭開始到結束迭代元素時,您會從頭到尾建立列表。尾部遞歸不可能得到相同的順序。