纸上谈兵: 数学归纳法, 递归, 栈

  • 时间:
  • 浏览:1
  • 来源:大发快3_快3手机app下载_大发快3手机app下载

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 

数学归纳法

数学归纳法(mathematical induction)是并不是生活数学证明土办法,常用于证明命题(命题是对某个问题图片图片的描述)在自然数范围内成立。随着现代数学的发展,自然数范围内的证明实际上构成了一些一些领域(比如数学分析)的基础,好多好多 数学归纳法对于整个数学体系至关重要。

数学归纳法并不是生活非常简单。不可能 他们你可不都可否证明某个命题对于自然数n都成立,如此 :

第一步 证明命题对于n = 1成立。

第二步 假设命题对于n成立,n为任意自然数,证明在此假设下,命题对于n+1成立。

命题得证

想一下上面的一另一有三个步骤。它们实际上原应,命题对于n = 1成立 -> 命题对于n = 2成立 -> 命题对于n = 3成立……直到无穷。有过后,命题对于任意自然数都成立。这就好像多米诺骨牌,他们挑选n的倒下会原应n + 1的倒下,有过后推倒第一块骨牌,就能保证任意骨牌的倒下。

他们来看一下使用数学归纳法来证明高斯求和公式:

n为任意自然数。

(这些 公式据说是高斯小学时想出来的。老师惩罚全班同学,须要算出1到3000的累加,并能回家。于是高斯想出了上面的土办法。天才全部都是被逼出来的么?)

他们的命题是: 高斯求和公式对于任意自然数n都成立。

下面为数学归纳法的证明步骤:

第一步 n = 1,等式左边(1的累加)为1,右边(右边公式代入n=1)也为1,等式两边相等,等式成立,有过后命题对于 n = 1 成立。

第二步 假设上述公式对于任意n成立, 即1到n的累加为n*(n+1)/2

    如此 ,对于n+1,等式的左边(从1到n+1的累加)等于n*(n+1)/2 + (n+1),即(n+1)*(n+2)/2

                  等式的右边的n用n+1代替,成为(n+1)*(n+2)/2

    等式两边相等,等式成立。有过后,当假设命题对于n成立时,命题对于n+1成立。

有过后,命题得证。

递归

递归(recursion)是计算机中的重要概念,它是指一另一有三个计算机多线程 调用其自身。为了保证计算机不陷入死循环,递归要求多线程 有一另一有三个并能达到的终止条件(base case)。比如下面的多线程 ,是用于计算高斯求和公式:

/*
 * Gauss summation
 */

int f(n)
{
    if (n == 1) { 
        return 1;  // base case
    }
    else {
        return f(n-1) + n;  // induction
    }
}

在多线程 中规定了f(1)的值,以及f(n)和f(n-1)的关系。这正是数学归纳法思想的体现。你可不都可否得到f(n),须要计算f(n-1);你可不都可否f(n-1),须要计算f(n-2)……直到f(1)。不可能 他们不可能 知道了f(1)的值,他们就并能填补前面所有的空缺,最终返回f(n)的值。

递归是数学归纳法在计算机中的多线程 实现。使用递归设计多线程 的过后 ,他们设置base case,并假设他们会获得n-1的结果,并实现n的结果。这就好像数学归纳法,他们只关注初始和衔接,而不须要关注具体的每一步。

递归是用栈(stack)数据内部实现的。正如他们上面所说的,计算f(n),须要f(n-1);计算f(n-1),须要f(n-2)……。他们在寻找到f(1)过后 ,会有一些空缺: f(n-1)的值这些 ? f(n-2)的值是这些 ? …… f(2)的值是这些 ?f(1)的值是这些 ? 他们的第一另一有三个问题图片图片是f(n)是这些 ,结果,这些 问题图片图片引出下一另一有三个问题图片图片,再下一另一有三个问题图片图片…… 每个问题图片图片的解答都依赖于下一另一有三个问题图片图片,直到他们找到第一另一有三个并能回答的问题图片图片: f(1)的值是这些 ?

他们用栈来保存他们在探索过程中的问题图片图片。C语言中,函数的调用不可能 是用栈记录离场情境和返回地址。递归是函数对自身的调用,好多好多 很自然的,递归用栈来保存他们的“问题图片图片” 。

他们假设栈向下增长。首先,他们调用f(3000),如此 当执行到

return f(n-1) + n; 

f(3000)暂停执行,并记录当前的情況,比如n的值,当前执行到的位置。过后调用f(99),栈增加一另一有三个frame,直到调用f(98) ... 栈不断增长,直到f(1)。f(1)得到结果1,并返回给f(2)。f(1)栈frame删除,转移到f(2)frame情境中继续执行

return f(n-1) + n; 

有过后返回给f(3) ... 直到f(99)返回给f(3000),并执行

return f(n-1) + n; 

返回f(3000)的值,得到结果。

上述过程是C编译器自动完成的。在实现递归算法时,也并能自行手动实现栈。曾经并能得到更好的运行强度。

总结

数学归纳法

递归

欢迎继续阅读“纸上谈兵: 算法与数据内部”系列。

猜你喜欢

魅蓝E2将是百万级销量 李楠自爆新动向

【IT168资讯】随着魅蓝E2的登场,魅族吹响了2017年开春后的首场战役。对于魅族来说,在历经公司调整、纠纷和解、渠道整合完后 ,去年终于在稳中有 升的情況下实现了盈利。但

2020-01-26

魅族 魅蓝6T香槟金3+32GB评测,行情,最新资讯

相关文章高通(Qualcomm)收购恩智浦(NXP)的进展一举一动都牵动着行业的心,该交易经过一再的延期将于美东7月25日到达最终期限。当地时间25日下午2点45分,知情人士称

2020-01-26

魅族 魅蓝Note3 全网通 高配版 金色价格,电商最低报价,多少钱

关于我们歌词 歌词 我们歌词 我们歌词 |广告服务|使用条款|联系我们歌词 歌词 我们歌词 我们歌词 北京盛拓优讯信息技术有限公司.版权所有中华人民共和国增值电信业

2020-01-26

强汉盛唐 富宋军明:中国历史上的四大强国!

华夏五千年的文明历史,每个朝代回会 文化隗宝,其中中国的二个朝代称得上世界强国!快跟随古建中国的小编一一同看看吧!第一次汉朝。西汉文帝、汉景帝采取养生息开创文景之治,汉武

2020-01-26

全国首个区块链算力中心落地西安

由智谷91000科技主办,普世资本、GTSE协办的IPFS共识大会暨智谷算力中心揭牌仪式于3月8日下午在西安曲江芙蓉阁酒店顺利举行。智谷算力中心专注于为目标企业提供数据存储处理

2020-01-26