scheme - 递归函数计算从1到n的所有数字的总和?

标签 scheme racket

我要解决的问题:

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/

相关文章:

string - 在 Racket 中截断字符串

python - 如何在方案中像 python 一样追加?

lisp - 简单的计划。第 8 章高阶函数

functional-programming - (Chez) 计划基准?

syntax - 基本 Racket 语法问题

scheme - 非空 Scheme 列表是否包含至少一个原子?

macros - 在 Racket 类函数中使用点表示法

clojure - Clojure 源中的父 eval(阅读器)函数?

Racket 的 Big Bang 框架 - 使用滴答率让游戏运行得更快?

mapping - 方案:映射 let 和 set!上 list