我發現下面的執行二進制搜索的方案:是作爲尾遞歸goto指令嗎?
(define (binary-search value vector)
(let helper ((low 0)
(high (- (vector-length vector) 1)))
(if (< high low)
#f
(let ((middle (quotient (+ low high) 2)))
(cond ((> (vector-ref vector middle) value)
(helper low (- middle 1)))
((< (vector-ref vector middle) value)
(helper (+ middle 1) high))
(else middle))))))
根據它所在評論中說,上述函數使用尾遞歸調用的幫助功能。我想知道這是否像GOTO指令一樣工作,因爲我沒有看到對二進制搜索函數有適當的「遞歸」調用。
在這種情況下,說它適合像goto指令嗎?
謝謝,那麼你是說真的在這裏進行遞歸的函數是對輔助函數的調用嗎? – Layla 2014-11-03 03:05:22
@Layla是的。 :-) – 2014-11-03 04:05:34