回 帖 发 新 帖 刷新版面

主题:8个8

只能用加、减、乘、除来组合8个8组成的运算式并使其值为2000,求加减乘除法的组合方式?
请高手帮用VB来这道奥数题?

回复列表 (共19个回复)

11 楼

感觉你没意识到我3楼的困惑

问题要求的解答仅仅是下面的形式

8 op1 8 op2 8 op3 8 op4 8 op5 8 op6 8 op7 8 ==2000
opn∈{+、-、×、÷}
是吗?
有没有比如下面的形式
-8 op1 8 op2 8 op3 8 op4 8 op5 8 op6 8 op7 8 ==2000

12 楼

[quote]只能用加、减、乘、除[/quote]
要求还是很清楚的。

7层循环是最自然的解法
递归的效率还不如7层循环

13 楼

[quote]感觉你没意识到我3楼的困惑

问题要求的解答仅仅是下面的形式

8 op1 8 op2 8 op3 8 op4 8 op5 8 op6 8 op7 8 ==2000
opn∈{+、-、×、÷}
是吗?
有没有比如下面的形式
-8 op1 8 op2 8 op3 8 op4 8 op5 8 op6 8 op7 8 ==2000

[/quote]

只判断的是op1,op2,...,op7;不存在(-8)op1(-8)正负符。

14 楼

[quote][quote]只能用加、减、乘、除[/quote]
要求还是很清楚的。

7层循环是最自然的解法
递归的效率还不如7层循环[/quote]

谢谢指点。

循环嵌套的确很直观
不过恐怕也不那么简洁
而且一般编译器对嵌套的层数是有限制的
所以如果问题更大些的话(比如不是8个8而是16个8)
这个方法可能失效
从这个意义来说思考其他的解法我认为是有意义的
当然递归的层数也有限制
但我的印象这个限制比循环嵌套要宽很多

“递归的效率还不如7层循环”的说法我觉得很难一概而论
我遇到过递归效率更高的例子
而且编程不能只考虑效率
如果把效率作为最高要求的话
函数这种东西根本就不应该存在
甚至几种控制语句都不应该用
我相信只使用if语句和goto语句的程序效率应该是最高的

15 楼

递归,在代码是那个看来是很简洁,但运算效率还要比多层嵌套差一点。有点却在于只需要修改递归终止条件,就可以轻易的改成7个数或18个数。这点上嵌套修改很烦。没有本质区别。

16 楼

[quote]递归,在代码是那个看来是很简洁,但运算效率还要比多层嵌套差一点。有点却在于只需要修改递归终止条件,就可以轻易的改成7个数或18个数。这点上嵌套修改很烦。没有本质区别。[/quote]

即使对本题来说
我估计循环嵌套的写法也是很烦的
因为恐怕还有优先级的问题需要处理
否则我估计楼主也不会感觉“不怎么地”了

17 楼

优先级的问题几乎不用考虑。

实际做法,并不在循环里面计算,每层循环仅仅构造“算式的字符串”。在最里一层循环内,一次性计算“算式字符串”的值。

18 楼

[quote]优先级的问题几乎不用考虑。

实际做法,并不在循环里面计算,每层循环仅仅构造“算式的字符串”。在最里一层循环内,一次性计算“算式字符串”的值。[/quote]
呵呵
让VB去做
你对
我好久不碰VB了
倒忘了VB也有许多惊人简洁的地方

19 楼

赞成12、15楼,用嵌套既直观效率又高!

我来回复

您尚未登录,请登录后再回复。点此登录或注册