【发布时间】:2013-06-20 01:04:25
【问题描述】:
我正在尝试学习一些函数式编程,并且正在解决方案(球拍)中的项目欧拉问题以帮助我入门。我目前在problem 15 上,我认为我有一个正确的函数来计算晶格中的路径数。问题是对于大量的 gridSize 函数需要很长时间才能运行。
(define uniqueTraverse
(lambda (x y gridSize)
(cond
((and (eq? x gridSize) (eq? y gridSize)) 1)
((eq? x gridSize) (uniqueTraverse x (+ y 1) gridSize))
((eq? y gridSize) (uniqueTraverse (+ x 1) y gridSize))
(else (+ (uniqueTraverse (+ x 1) y gridSize)
(uniqueTraverse x (+ y 1) gridSize))))))
我试图弄清楚如何使这个函数尾调用递归,但我不知道该怎么做。我需要一些帮助来了解如何考虑使用尾调用优化来优化这样的函数。
【问题讨论】:
标签: recursion functional-programming scheme racket