我要解决的问题:
Write a Scheme function called "my-sum" which takes a
nonnegative number n and outputs the value
1+2+ .. +n
Your solution should use recursion.
我已经定义了通用函数...并且我知道如何在 C++ 中执行此操作而无需递归。但我很难决定如何使用Scheme 来解决这个问题。
到目前为止我所得到的:
(define my-sum
(lambda (x)
(+ x (- x 1))))
最佳答案
这是一个纯粹的递归解决方案:
(define (my-sum x)
(if (zero? x)
0
(+ x (my-sum (- x 1)))))
不幸的是,这不是尾递归。这是尾递归的版本:
(define (my-sum x sum)
(if (zero? x)
sum
(my-sum (- x 1) (+ x sum))))
你可以这样调用它:
(my-sum x 0)
这里,sum
是累加器。
您的第二个答案做了同样的事情,使用尾递归的内部辅助函数,在对内部辅助函数的初始调用中向累加器提供初始值。
关于scheme - 递归函数计算从1到n的所有数字的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528373/