美文网首页每天学一点新知识
[数学]递归来定义阶乘_程序员数学_day64

[数学]递归来定义阶乘_程序员数学_day64

作者: FANDX | 来源:发表于2020-03-18 23:01 被阅读0次

阶乘的定义

n! = n*(n-1)*(n-2)* ... *2*1

按照这样的定义0的阶乘意义不明确。因此,另外定义了0! = 1

如果我们要如递归地定义阶乘。这可称为阶乘的递推公式

f(n)=\begin{cases}1 &(n=0时)\\n\times f(n-1)! & (n=1,2,3,4...时)\end{cases}

从阶乘的定义可知:

  • 3! = 3 \times2!
  • 2! = 2 \times1!
  • 1! = 1 \times0!
  • 最后根据n=0的时候,定义0!=1

递归求和

同阶乘一样,需要先做出对应的递推公式

S(n)=\begin{cases}0 &(n=0时)\\n+S(n-1)! & (n=1,2,3,4...时)\end{cases}

在高斯算法中,S(n)的解析式已经断言做过分析了

S(n)=\frac{n\times(n+1)}{2}

递归和归纳

递归和归纳其实都是一种将复杂问题简单化的过程,

使用递归来证明数学归纳法:

#include <stdio.h>
#include <stdlib.h>

void prove(int n)
{
  if (n==0){
    printf("根据步骤1, 得出P(%d)成立。 \n", n);
  }else{
    prove(n-1);
    printf("根据步骤2,可以说若P(%d)成立,则P(%d)也成立。\n", n-1, n);
    printf("因此, 可以说‘P(%d)是成立的’ \n ", n);
  }
}

int main(int agrc, char *argv[])
{
  prove(5);
}

相关文章

  • [数学]递归来定义阶乘_程序员数学_day64

    阶乘的定义 按照这样的定义0的阶乘意义不明确。因此,另外定义了0! = 1 如果我们要如递归地定义阶乘。这可称为阶...

  • 递归

    递归 下面这个函数大家学过数学的都知道吧,阶乘的函数定义。 转换 我们将上面的数学表达式转换成下面的代码 关注点 ...

  • 连春赏识打卡2022.9.19 day64

    连春赏识打卡2022.9.19 day64 老二: 今天在学校获得三个好评——语文听写明星、数学书写明星、数学发言...

  • Android 算法之递归

    定义 在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。递归的三要素: 明确递...

  • LDA主题模型

    LDA数学八卦学习笔记 数学知识 Gamma函数 Gamma函数的性质其可以看作阶乘在实数集上的扩展 Gamma分...

  • 2018-05-29 3D数学03(第四章)-向量

    第一节:数学角度的向量 1.向量的数学定义 对数学家而言,向量就是一个数字列表,对程序员而言则是另一种相似的概念-...

  • Atitit 程序员的数学艾提拉读后感 1.1.程序员的数

    Atitit 程序员的数学艾提拉读后感 [if !supportLists]1.1.[endif]程序员的数学 第...

  • MSP-2. 起源&定义

    上一章节 MSP-1. 前言 2 起源&定义 2.1 哲学与数学 2.2 数学定义 2.3 函数关系式-数学定义 ...

  • 栈与递归的实现

    直接调用自己或通过一系列的调用语句间接的调用自己的函数,称为递归函数。一、许多数学函数就是通过递归定义的,如:阶乘...

  • 一份必不可少的程序员“内功”书单

    含PDF下载链接,后期持续更新 大话设计模式 大话数据结构 代码整洁之道 程序员的数学1-数学思维 程序员的数学2...

网友评论

    本文标题:[数学]递归来定义阶乘_程序员数学_day64

    本文链接:https://www.haomeiwen.com/subject/uiuhyhtx.html