程序员的数学(1)--读后感

2017/2/14 晴天

第一章 :0的故事–无即是有

1.十进制和二进制
12/2—6–%–0
6/2—-3–%–0
3/2—-1–%–1
1/2—-0–%–1
所以12的二进制为1100 —-12=1x(2^3)+1x(2^2)+0x(2^1)+0x(2^0)
12345=1×10000+2×1000+3×100+4×10+5×1;

2.计算机选择二进制 (0代表断开,1代表连通);

  1. 10的0次方
    ……..
    10^2=100
    10^1=10(十分之一)
    10^0=1(十分之一)
    10^-1=1/10(十分之一)
    ………

  2. 0的作用
    –占位

第二章:逻辑

  1. 逻辑的完整性和排他性
    完整性:没有遗漏
    排他性:没有重复(一个x只能得到一个y值)

  2. 逻辑非¬,或∨,与∧(文氏图Veen diagram)
    德摩根定律
    ¬A∨¬B=¬(A∧B)
    ¬A∧¬B=¬(A∨B)
    在逻辑表达式中分别将TRUE和FALSE,A和¬A互换就能够得到该逻辑表达式的否定式
    TRUE—-FALSE
    A—-¬A
    ∧—-∨
    他们是相互成对的,这称作逻辑表达式的对偶性

    3.卡诺图(Karnaugh Map)
    《程序员的数学(1)--读后感》

    1. undefined(未定义的逻辑)
      《程序员的数学(1)--读后感》
      《程序员的数学(1)--读后感》
  3. 逻辑表现形式
    《程序员的数学(1)--读后感》

第三章:余数—-周期性和分组

  1. 《程序员的数学(1)--读后感》
  2. 《程序员的数学(1)--读后感》
    《程序员的数学(1)--读后感》
    《程序员的数学(1)--读后感》
    《程序员的数学(1)--读后感》
    《程序员的数学(1)--读后感》
    《程序员的数学(1)--读后感》
    《程序员的数学(1)--读后感》

第四章:数学归纳法:无穷数列

  1. 0+1+2+3+….+i+….+n=n(n+1)/2;
    《程序员的数学(1)--读后感》

    (1)基底 第一个元素正确;
    (2)归纳 由k推及K+1;

第五章:排列组合

  1. 《程序员的数学(1)--读后感》
    将100颗药放成一排,用两个隔板隔开,因为每种都大于一,所以隔板有99个位置能放。结果为c2(99)

第六章:递归

  1. 汉诺塔:Tower of Hanoi
    汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

/*汉诺塔
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大
小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序
重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱
子之间一次只能移动一个圆盘。 */

#include<stdio.h>
   void hanoi(int n,char x,char y,char z );

    int main(){
        int n;
        scanf("%d",&n); 
        hanoi(n,'a','b','c'); 
        return 0;
    } 

    void hanoi(int n,char x,char y,char z ){  //x,y,z分别为该轮(n)起点,终点,中转点 
       if(n==0){

       } 
       else{

        hanoi(n-1,x,z,y);             //x,z,y分别为该轮(n-1)起点,终点,中转点(将n-1个盘子放在z上) 
        printf("%c-->%c,",x,y);         //从起点到终点,将x最低下的盘子移动到目的地y 
        hanoi(n-1,z,y,x);             // 最后将z上的n-1个盘子移动到 y上,此时 完成。 
       }
    }

  /*汉诺塔:
    典型的递归,n通过n-1来计算,n-1通过(n-1)-1计算....一直到基底再反过来计算得到n,这就是递归,不断调用自身*/
/* 这个代码可以将每次的盘子代号输出
#include <stdio.h>  
//第一个塔为初始塔,中间的塔为借用塔,最后一个塔为目标塔 
int i=1;//记录步数 
void move(int n,char from,char to) //将编号为n的盘子由from移动到to 
{printf("第%d步:将%d号盘子%c---->%c\n",i++,n,from,to);  
}  
void hanoi(int n,char from,char denpend_on,char to)//将n个盘子由初始塔移动到目标塔(利用借用塔) 
{  
    if (n==1)  
    move(1,from,to);//只有一个盘子是直接将初塔上的盘子移动到目的地 
    else  
    {  
      hanoi(n-1,from,to,denpend_on);//先将初始塔的前n-1个盘子借助目的塔移动到借用塔上 
      move(n,from,to);              //将剩下的一个盘子移动到目的塔上 
      hanoi(n-1,denpend_on,from,to);//最后将借用塔上的n-1个盘子移动到目的塔上 
    }  
}  
void main()  
{  
     printf("请输入盘子的个数:\n");  
     int n;  
     scanf("%d",&n);  
     char x='A',y='B',z='C';  
     printf("盘子移动情况如下:\n");  
     hanoi(n,x,y,z);  
}  */
  1. 阶乘
    定义
    n!=1 (n=0);
    n!=nx(n-1) (n>0);
    同样是递归,和之前的数学归纳法有相似之处,1. 基底,2. k推出k+1

3.递归和归纳
《程序员的数学(1)--读后感》

4.菲波那切数列
《程序员的数学(1)--读后感》
f(1)=1; (n=1)
f(n)=f(n-1)+f(n-2);(n>1)
为了计算n=0时候,f(0)=1;

5.杨辉三角(帕斯卡三角)
—从n层的整体问题中隐去部分问题(考虑特殊情况)
—判断剩余部分是不是n-1的问题。

6.谢尔平斯基三角
《程序员的数学(1)--读后感》

    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/prospective0821/article/details/55101612
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞