scheme - 计算 Racket BSL 中给定数字的适当除数之和

标签 scheme lisp racket racket-student-languages dr.racket

设计一个名为 findProperDivisor 的 Racket 函数,它接受一个自然数并计算其所有适当除数的总和。自然数的真约数是严格小于该数的约数。

例子:

输入:20

输出:22

//适当的约数:1 + 2 + 4 + 5 + 10 = 22

(define (sum-of-proper-divisors n i)
  (cond [(= i 1) 1]
        [(= (remainder n i) 0)
         (+ i (sum-of-proper-divisors n (sub1 i)))]
        [else (sum-of-proper-divisors n (sub1 i))]))

我在这个页面上找到了这个代码,但它给了我 1+2+4+5+10+20=42 我需要 22

我想通过使用递归和cond 用一个参数编写这段代码。我使用的是初级学生语言 (BSL),它没有定义 let 之类的东西。

最佳答案

第 1 步:了解代码的作用。为什么会有一个额外的参数?它发生了什么?

第 2 步:如何调用它?这对 i 意味着什么?

第 3 步:您必须采取哪些不同的操作才能不根据数字本身检查余数?

关于scheme - 计算 Racket BSL 中给定数字的适当除数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191186/

相关文章:

lisp - 如何编写一个接受两个列表并返回四个列表的方案函数

scheme - Racket 图的语法

scheme - 将列表排序为子列表

recursion - 这个方案函数似乎是尾递归的,那么为什么我会出现堆栈溢出

list - 从列表中生成方案中的所有可能性

lisp - 将原子拆分成列表 lisp

scheme - 解决方案中的奇数重复

list - 重新排列 lisp 中的列表元素

struct - 添加结构字段

scheme - 使用定义的过程作为参数与使用 lambda 表达式作为参数产生不同的结果