我目前在Scheme中編寫一個簡單的程序,遞歸地將數字相加,而不使用+運算符。現在我有這個程序,它做什麼,我想做的事:將尾遞歸/迭代過程轉換爲完全遞歸過程
(define (add1 x) (+ x 1))
(define (sub1 x) (- x 1))
(define (plus x y)
(if (zero? y)
x
(plus (add1 x) (sub1 y))
)
)
然而,我的導師要我放下尾遞歸/迭代和寫加過程完全遞歸。沒有告訴我太多(畢竟,這是一個單一的練習),你能指出我在正確的方向弄清楚如何做到這一點?
在此先感謝!
如果你不想尾遞歸,你只需要移動'add1',但我不會說在哪裏。 (add1' *如何不使用'+'?我很確定它的確如此。) – molbdnilo
告訴你的導師,尾遞歸是「完全遞歸」的。 –
這是我聽過的最辛苦的運動。 –