scheme - 如何在 Scheme 中使用递归除法?
问题描述
我正在尝试使用三个参数 x、y 和 n 定义一个名为 (nDivide xyn) 的递归过程。它返回 x 除以 yn 的结果。我有一个除法函数(定义(Divide xy)(/ xy))。现在我正在尝试在 nDivide 中使用 Divide 函数,但我无法让它工作
解决方案
基本上有两种方法可以做某事n
:
- 做一次,然后做
n - 1
几次; - 做
n - 1
几次,然后做一次。
根据您选择的路径,您会获得不同的程序:
; divide, then recurse
(define (nDivide x y n)
(if (zero? n)
x
(nDivide (Divide x y) y (- n 1))))
; recurse, then divide
(define (nDivide x y n)
(if (zero? n)
x
(Divide (nDivide x y (- n 1)) y)))
推荐阅读
- elasticsearch - 如何在字段中使用正则表达式查找关键字,如下所示
- matlab - 在matlab中使用if else语句绘制完整图
- java - 如何使用从 Java 到 TestRail 的 API 将测试用例添加到现有的测试运行中?
- google-maps - Xamarin 窗体自定义引脚单击
- android - 将 Spring Social 与原生 Android 应用程序集成
- powerbi - Weeknum 功能无法正常工作
- c++ - 寻找一种更好的方法来表示无符号字符数组
- powershell - 比较同一目录的不同版本(按修改日期)
- c# - 将 Nuget 包提供的 EXE 部署为 ClickOnce 安装的组件
- jquery - Bootstrap:以 boostrap 网格格式显示多个轮播