哪位高手给小弟我讲讲递归,当有两个或以下的时候
谁给我讲讲递归,当有两个或以上的时候
我知道递归是做重复的事,大事化小,比如树的遍历,汉诺塔问题等等,都是用两个以上的递归来解决
我想掌握这样的方法去编程,但是现在不是很理解
所以哪位给我讲讲怎么分析两个或两个以上的递归,要深入分析每一层递归吗?还是宏观把握?
最重要的是告诉我怎么掌握这种方法!
------解决方案--------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
------解决方案--------------------
先用debugger理解函数的调用是怎么回事,然后跟踪一个简单的递归函数(比如阶乘),深入理解函数调用(自己调用自己),然后跳出函数调用的思考,尝试去用抽象的观点理解递归(就是纯粹数学上的递归)。
我知道递归是做重复的事,大事化小,比如树的遍历,汉诺塔问题等等,都是用两个以上的递归来解决
我想掌握这样的方法去编程,但是现在不是很理解
所以哪位给我讲讲怎么分析两个或两个以上的递归,要深入分析每一层递归吗?还是宏观把握?
最重要的是告诉我怎么掌握这种方法!
------解决方案--------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
------解决方案--------------------
先用debugger理解函数的调用是怎么回事,然后跟踪一个简单的递归函数(比如阶乘),深入理解函数调用(自己调用自己),然后跳出函数调用的思考,尝试去用抽象的观点理解递归(就是纯粹数学上的递归)。