需要说明的是,这不是家庭作业,我在业余时间学习 CS!
我最近买了一本查尔斯·菲利普斯 (Charles Phillips) 的书,书名是《逻辑思维的 50 个谜题》。我启动了其中一个,然后我想到我可以使用递归来解决问题。这是(转述的)问题:
Insert a mathematical operator (+, -, ÷, x) in each of the spaces to solve the equation:
6 _ 3 _ 5 _ 7 _ 4 _ 8 = 13
据我了解,为了使用递归解决这个问题,我首先需要确定一个基本案例。但是,我在执行此操作时遇到了问题。
所以我的问题是,什么是可能的基本案例,我应该如何开始实现它?递归函数可能是什么样子(参数、返回类型等)?(代码很有用)!
这是我目前所拥有的:我认为接近工作
查看我的实现答案
注意我正在使用 Java
最佳答案
我认为停止条件应该意味着满足方程式:所有运算符都已填写,并且运算结果正确。
我会将等式表示为解析树,叶子为数字,父代为运算符。树自然适合递归,因为它是分层数据结构。
做一个运算符假设,其中根运算是减号,右 child 是期望值 (13),左 child 是左边。添加运算符、评估树并回溯直到满足停止条件。
关于java - 在 Java 中实现递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14537995/