两个简单的认知学原因:
1. 我们的工作记忆只能存放7加减1个items。(这里)你不妨在大脑中模拟一下汉诺塔递归程序的运行过程,看看需要用多少记忆空间。(我敢保证三层递归就"溢出"了)
> 两个简单的认知学原因:
>
> 1. 我们的工作记忆只能存放7加减1个items。(这里<http://en.wikipedia.org/wiki/The_Magical_Number_Seven%2C_Plus_or_Minus_Two>
> )你不妨在大脑中模拟一下汉诺塔递归程序的运行过程,看看需要用多少记忆空间。(我敢保证三层递归就"溢出"了)
> 2.
> 语意相同的item被存放在同样的突触连接中。(关于大脑与记忆的书中常用这样的例子:你搬家之后,有了新号码。一开始你总是拨成老号码,记不住新号码。而一旦记住了新号码,老号码又难以记得了。----似乎是《找寻逝去的自我》,我记不清是哪本书了。)而一个递归函数中的各个局部变量语意都是相同的,所以会互相混淆----它们名字都是i,你叫我怎么区分噻?
>
> 其实最主要还是第一点。
>
> 如何理解递归?也很简单,像理解数学归纳法那样理解:第一步,先证明base
> case的正确性。第二步,假设第n层都是正确的,证明n+1层仍然保持了正确性的invariants(不变式)。
>
> --
> 刘未鹏(pongba)|C++的罗浮宫
> http://blog.csdn.net/pongba
> TopLanguage
> http://groups.google.com/group/pongba
>
> >
为什么我难以理解循环...
--
Ray Stinger, nickname Lich_Ray
God is in his heaven, all's right with the world.
-------------------------------------------------
let focus = 'computing' in where:
http://lichray.javaeye.com
let focus = 'computing' in here:
http://let-in.blogspot.com
在 08-7-8,Henry Read<henr...@gmail.com> 写道:
无论是分解法,加整还是减整,练熟了都比笔算快
----------------------------------------------------------------------------------
Yours Sincerely
Kun
blog: www.forwind.cn
2008/7/9 fxc...@gmail.com <fxc...@gmail.com>:
很多人都认为递归需要栈,所以难理解;其实在理解的过程中,递归是不需要栈的。真正需要理解时栈的是循环。从循环中你看不出任何逻辑,只能从注释中知道它想干什么。
有一个技巧:在脑海中想像一张白纸,想想自己拿着笔将结果写在纸上,就如同用纸笔计算一样。
原理是利用了视觉皮层的存储空间。
当然,还是比不上真正写在纸上的刺激强的,想像中的刺激总是打了个折扣,但总比没有好。
我有一次在书店里转悠,看到四本书,我想记下来回去再网上查,但手头没有纸笔,于是使用了一下古希腊人早就发明的空间记忆法:记住自己是站在书店的什么方位朝向哪边,看到那个书所在的什么地方的。简言之就是把周围环境线索连带着都记下来,结果回去一想,真是历历在目,到现在我都还能够记得起来,而且其它几本在他们旁边的书也大概都记得。
原理是利用海马的空间记忆的强大能力,提供大量的记忆提取线索。
还有比如气味记忆:如果学习某个东西的时候,环境中有一种比较奇特的味道。那么,当回忆的时候重放这种味道就会有助于回忆起当初记忆的东西。此外还有音乐:有一段时间我看古龙的小说的时候总是开着某段音乐,后来每当听到这段音乐,脑海中就泛起看古龙小说时的那种感觉。