递归的思想:
归纳法适用于想解决一个问题转化为解决他的子问题,而他的子问题又变成子问题的子问题,而且我们发现这些问题其实都是一个模型,也就是说存在相同的逻辑归纳处理项。当然有一个是例外的,也就是递归结束的哪一个处理方法不适用于我们的归纳处理项,当然也不能适用,否则我们就无穷递归了。这里又引出了一个归纳终结点以及直接求解的表达式。如果运用列表来形容归纳法就是:
- 步进表达式:问题蜕变成子问题的表达式
- 结束条件:什么时候可以不再是用步进表达式
- 直接求解表达式:在结束条件下能够直接计算返回值的表达式
- 逻辑归纳项:适用于一切非适用于结束条件的子问题的处理,当然上面的步进表达式其实就是包含在这里面了。
1、返回一个二叉树的深度
int depth(Tree t){ if(!t) return 0; else { int a=depth(t.right); int b=depth(t.left); return (a>b)?(a+1):(b+1); } }
时间: 2024-11-29 11:38:41