程序员的数学I

递归——自己定义自己2

  • 思考:和的定义

假设n为0以上的整数,使用递归的方式从0到n的整数之和。

  1. n=0时, S(n)=0
  2. n>1时,n=S(n-1) (n=1,2,3...)
    解析式 S(n)= n x (n+1) / 2 (高斯的断言)

斐波那契数列

  • 思考:有一种动物,TA出生2天后,就开始以每天1只的速度繁殖后代。假设第1天,有一只这样的动物(该动物刚出生,从第3天起繁殖后代)。问,到第11天,共有多少只?

思路,按顺序思考,找出规律。

  1. 第1天,只有1只动物
  2. 第2天,只有1只动物,还没有繁衍后代
  3. 第3天,第1天的1只动物,繁殖1个后代,合计2只
  4. 第4天,第1天的1只动物,又繁殖1个后代
    第3天出生的还没有开始繁殖,总共3只
  5. 第1天和第3天出生的2只动物各繁殖1个后代。
    第4天出生的1只动物还没繁殖后代,合计5只。
    进行归纳的时候,不用想着第n天几只,可以如下思考:
  • 第n-1天出生的动物,在第n天还活着
  • 第n-2天以前出生的动物,在第n天后会繁殖1个后代
  • 总结出递推公式:
    若设第n天的动物总数为F(n),则
    F(n)=F(n-1)+F(n-2)
    第n天的动物数 = 第n-1天前的动物数 + 第n-2天前出生的动物数
    在这里,为了让等式成立(即让n=2时,公式成立),定义F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)
    由此,我们可以推断出:
    F(0) = 0
    F(1) = 1
    F(2) = F(1) + F(0) = 1 + 0 = 1
    F(3) = F(2) + F(1) = 1 + 1 = 2
    F(4) = F(3) + F(2) = 2 + 1 = 3
    F(5) = F(4) + F(3) = 3 + 2 = 5
    ...
    F(11) = F(10) + F(9) = 55 + 34 = 89
  • 问题中出现的数列:
    0,1,1,2,3,4,5,13,18,21,34,55,89, ...
    是在13世纪由数学家斐波那契发现的,因此称为斐波那契数列

斐波那契数列是非常优美的,用它出现的变形非常多,我找了几个利用TA作的图:

程序员的数学I_第1张图片
斐波那契数列作图
程序员的数学I_第2张图片
斐波那契螺旋
程序员的数学I_第3张图片
自然界的斐波那契

帕斯卡三角形

这个用文字描述非常累赘,公式不太好表达,因为不支持LaTex,所以就不写了。

杨辉三角形: 除每行最左侧与最右侧的数字以外,每个数字等于它的左上方与右上方两个数字之和:

程序员的数学I_第4张图片
初始
程序员的数学I_第5张图片
加好之后
程序员的数学I_第6张图片
杨辉三角形

思考题:

  1. 递归形式画一棵树
  2. 谢尔平斯基三角形

总结,把握结构是“分解”整个问题的突破口

你可能感兴趣的:(程序员的数学I)