我在数河内塔的移动
In [4]: %paste
count = 0
def hanoi(n, a, b, c):
global count
if n == 1:
count += 1
else:
hanoi(n - 1, a, c, b)
hanoi(1, a, b, c)
hanoi(n - 1, b, a, c)
hanoi(10, "A", "B", "C")
## -- End pasted text --
In [5]: print(count)
1023
上述解决方案使用了global
关键字
如果不引入全球化,怎么能做到呢?你知道吗
没有必要为此使用复杂的代码。毕竟,这是基于数学的,所以只要使用这个简单的一行解决方案,在每一个代码中每次都有效。 把它放在河内代码的末尾使用标签ofc。。。但之前 河内(10,“A”、“B”、“C”) 把那些根本用不着的“清点”人员都撤掉。你知道吗
比方说,你的河内代码是这样结束的,用这个数学代码:
河内(4,“A”、“B”、“C”)
你不必再编写其他代码来计算。只需在代码的和处输入数字。越少越好,越快。。。 如果你让所有的代码都变长并扩散,结果会变慢。电脑:学生是用来做数学的,那我们为什么不使用它呢!?你知道吗
另一件事是,河内代码本身比这些计数代码更容易制作。让我们比较一下这个randint代码。。。 河内代码只需要一个打印/格式,如下所示:
您还可以在代码中去掉int和str。任何选择,你都可以省去代码,让它更快更干净。当有数以百万计的代码时,这样做是合理的。除非你想在主代码中隐藏一些东西。你知道吗
原因是,只有一个起点/终点。空点(当它们是空的时候)只是“帮助”点。我不想谈得太深。 但最后。。。你知道吗
数学中的组合数学,甚至是Python中的组合数学,给出了事件的开始/结束点和数量,包括事件的多少(n),位置(A,B,C…),一些时间,甚至计时器/触发器(有很多选项)
学习河内大厦是有用的和强大的,理解,所以当你做你的代码,你可以使用这些给定的选项和打印它们,用简单的数学代码,而不是做复杂的代码错误。如果您愿意,您可以广告有许多微小的河内代码,因为您喜欢和仍然,您可以得到正确的答案(只是分开他们与r或n选项行或新行)。你知道吗
我希望这是更好的答案,在解释了组合数学之后。你知道吗
或者即使没有任何
count
变量:输出
通过一点重构使函数递归到一个公共的
count
变量:输出
相关问题 更多 >
编程相关推荐