提纲

1.n和n+1的关系

结论必须由一个整数n决定

结论的定义必须明确,这样我们才可能检验由第n项过渡到下一项也就是n+1的时候,结论是否还能成立。

 

我们期望得到这样一个结果:

只要这个结论对n成立,那么对n+1也成立。所以我们要做的有两件事,一是证实结论在取某个值时是正确的,二就是证实取下一个值也是正确的。

我们考虑,如果取某个值,那么这个值取什么数好呢?很显然,什么事情我们都希望从最简单的情况出发,因此取1就是我们的选择,也就是n=1。

因此n=1时成立,所以n+=1,也就是n=2的时候也成立,同理,n=3的时候也成立。从任意整数过渡到下一个,我们就普遍的证明了这个结论。普遍的证明说明已经遍历了所有情况,类似于遍历一个集合,我们也只需要得到头结点(n=1),然后也是next,然后再next……就可以把整个集合遍历。

我们经常使用这一手段去证明一些东西,因此应该给它取一个名字比较好。叫什么呢?直观点干脆就叫做“从n到n+1的证明”,叫”证明下一个整数也是对的“也可以。可惜,专业的名称叫做”数学归纳法“。

名字是随便起的,其实并不重要。我们要理解的是背后这一过程。

 

2.斐波那契数列

用数组显式的表示前后位置关系

long Fib(int n)
{
    var list = new List<int>();
    list[0] = 0;
    list[1] = 1;

    forvar i = 2; i < n; i++)
    {
        list[i] = list[i-1] + list[i-2];
    }

    return list[n-1];
}

递归是用调用栈隐式的表示位置的前后关系

 

3.尾递归

posted on 2012-02-16 20:34  一路转圈的雪人  阅读(810)  评论(0编辑  收藏  举报