每天学一点新知识

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

2020-03-18  本文已影响0人  FANDX

阶乘的定义

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}

从阶乘的定义可知:

递归求和

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

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);
}
上一篇 下一篇

猜你喜欢

热点阅读