程序员的数学 (3)

程序员的数学

 

1.5 排列组合

  1.5.1 阶乘:阶乘是指一个运算符号,一个正整数的阶乘factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。

       自然数n的阶乘写作n!,亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

  1.5.2 排列定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;

        从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示。

  1.5.3 排列计算公式: 

  1.5.4 组合定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;

         从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。

  1.5.5 组合计算公式: 

  1.5.6 排列和组合区别:排列是讲究排序的,而组合不考虑元素排序,一般来说,从n中不同元素取出m个元素的排列,要比组合数量多。

       对于组合公式的理解,相对排列而言会绕一点,这里试图解释一下组合公式:

      从n个不同元素中取出m个元素的所有组合个数,可以理解成先从n个不同的元素中取出m个元素的所有排列个数为Anm    (即A(n, m) ),

      然后因为m个元素的排序方式共有m!(即m*(m-1)*(m-2)*...*1, m的阶乘)种,而组合不考虑元素排序,相当于数量A(n, m)中重复了m!次,

      所以排序数量A(n, m)  除以 排序方式数量m! ,  则是我们需要的没有重复的组合数量了,即C(n, m) = A(n, m) / m!

  

二、逻辑且/或/非/异或,和余数

2.1 计算机为什么采用二进制计数法

  2.1.1 在10进制计数法中,位数少,但是数字的种类多。(对于人类来说,比较易用)

  2.1.2 在二进制计数法中,数字的种类少哦,但是位数多。(对于计算机来说,这种比较易用)

2.2 指数的法则:对于指数 a^n, n每减1,新的值就变成原来的1/a,即a^(n-1) 为 a^n的1/a

2.3 零的作用:用来表示占位;也用来统一标准,简化规则;

2.4 逻辑

  命题:能够判断对错的陈述句叫做命题。命题正确时,则该命题为“真”(true);反之,命题不正确时,称该命题为“假”(false)。

  在建立规则时,需要确认规则有没有“遗漏”和“重复”;

  没有“遗漏”,即完整性,明确此规则在什么情况下都能适用;没有“重复”,即具备排他性,明确此规则不存在矛盾之处。

  逻辑从根本上说是对完整性和排他性的组合表达。

三、数学归纳法

四、排列组合

五、递归

六、指数爆炸

 

参考资料:百度百科,和《程序员的数学.(日)结城浩》

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpspyz.html