关于递归(转)

原文链接:https://blog.csdn.net/quickzhao3223/article/details/80988797

节选:
证明: 一棵完全有k层的完全二叉树有2^k-1个节点。

1)基准点:k=1 , 节点个数为2^k-1 = 1,很显然成立;
2)假设,对k=n, 这个结论仍然成立,2^n-1;
3) 要证明,对 k =n+1时,这个结论仍然成立 2^(n+1)-1
根据假设,现在的总结点是: (2^n-1)*2+1 = 2^(n+) - 1

再次来审视一下递归:
到底什么是递归?
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归能解决什么问题?
有很多数学公式可以使用递归(recursive)的方式来声明:
F(0) = 0 X = 0
F(X) = 2F(X-1)+X^2 X > 0

怎么来写一段递归代码?
作为练习;

递归一般来说要考虑两个基本法则:
1)基准情形(base case);必须得有最基准的情形,不用递归就能解决;
2)不断推进(making progress);对于那些需要递归求解的情形,递归调用必须总能朝着基准情形的方向推进;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章