初学编程对递归思想很难理解,求前辈指导一下
刷题的时候经常遇到需要递归的思想,但是我看答案的递归无法想象出它的结果是什么形成的,感觉十分的抽象,尤其是对于一些树,图的遍历已经其他需要递归完成的操作。
刷题的时候经常遇到需要递归的思想,但是我看答案的递归无法想象出它的结果是什么形成的,感觉十分的抽象,尤其是对于一些树,图的遍历已经其他需要递归完成的操作。
f(n) = f(n-1) + f(n-2)
f(2) = f(1) = 1
如果这个循环是通过函数调用自身实现的,就叫递归。
(顺便,在团队中不太想看到别人的代码里出现太多递归
周末你带着女朋友去电影院看电影,女朋友问你,咱们现在坐在第几排啊?电影院里面太黑了,看不清,没法数,现在你怎么办?
别忘了你是程序员,这个可难不倒你,递归就开始排上用场了。于是你就问前面一排的人他是第几排,你想只要在他的数字上加一,就知道自己在哪一排了。但是,前面的人也看不清啊,所以他也问他前面的人。就这样一排一排往前问,直到问到第一排的人,说我在第一排,然后再这样一排一排再把数字传回来。直到你前面的人告诉你他在哪一排,于是你就知道答案了。
来自: https://www.showdoc.cc/476806889376927?page_id=2791994496480277
程序返回的结果由下一层程序提供,这是我理解的递归
1. 我(当前的 function )只管当前要做的事情。
2. 其他的逻辑由其他递归的 function 来做。我(当前的 function )不知道他们怎么做出来的,但是我就 assume 他们运行完拿到了正确的结果。
比如 recursively 打印二叉树中序 node。
sudo code 是
recurPrint:
if(currentNode==null){
return;
}
recurPrint(Left Node)
print(current Node)
recurPrint(Right Node).
这个就是我 assume recurPrint(Left Node) 和 recurPrint(Right Node) 都运行正确。我就把当前的 node 打出来了 print(current Node)。
做完这个逻辑后需要确认 recurPrint(Left Node) 和 recurPrint(Right Node) 真的能运行成功。那就想下有什么特殊的需要处理的 case。就是当前 node 是 null 时,这时不打印直接返回,整个逻辑就 ok 了
理解了吗???哈哈
文档:10_递归:如何用三行代码找到“最终推荐人”? 链接: http://note.youdao.com/noteshare?id=d026fcabe93136f02c95efc449c6624f
f a(){
if(num>10){
}
}