Java教程

【九月打卡】第18天【养成记】嵌入式挑战第18天,递归函数

本文主要是介绍【九月打卡】第18天【养成记】嵌入式挑战第18天,递归函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程章节:

课程名称:物联网/嵌入式工程师
章节名称:第4周之第四讲 1-18 至 1-19 C语言中的函数:递归函数
讲师姓名:大白老师

课程内容:

C语言中的函数:递归函数

概念

概念:在函数体内,自己调用不断的调用自己,直到某个条件满足才结束调用。
这样的函数我们叫做递归函数。

说明

例如:我们要求5!,该怎么求?
①5 * 4!

② 5 * 4 * 3!

③ 5 * 4 * 3 * 2!

④ 5 * 4 * 3 * 2 * 1 ====> 递推结束条件
我们递归函数两个阶段:
1、递推 : 从 ①到④ 开始
2、回归 : 从return开始回归,④到①

解题思路:

n --------表示我们切刀数
a(n)  --------表示我们切n刀可以分成的块数
<1>我们一刀都不切.
 n = 0  a(0) = 1
<2>当我们切刀的时候
a(1) = 1 + 1 = 2   //切1刀多1块
a(2) = 2 + 2 = 4   //切2刀多2块
a(3) = 4 + 3 = 7   //切3刀多3块
a(4) = 7 + 4= 11   //切4刀多4块
归纳后得到的规律:
a(n) = a(n - 1) + n  //切n刀多n块·

代码示例:

#include <stdio.h>
//计算切n刀所的饼数
int cutpie(int n) //4
{
    int sum = 0;        

    //思考:什么时候结束
    if(n == 0)
        return 1;

    sum = cutpie(n - 1) + n;
    return sum;
}


int main(int argc, const char *argv[])
{
    int n = 0;        
    int num = 0;
    printf("please input you want to cut knife_number : ");
    scanf("%d",&n);

    num = cutpie(n);
    printf("num = %d\n",num);
    return 0;
}

学习笔记:

#include <stdio.h>

void factorial(const int number,int n)
{
    int i = number;
    if ( i - 1 > 0 ) {
        n = i;
        n = n * (i-1);
        factorial(i - 1,n);
    }
    return;
}

int main()
{
    int n = 0;
    printf("请输入一个数:\n");
    scanf("%d",&n);
    factorial(n,n);
    printf("\n");

    return 0;
}

课程评价:

通过学习递归函数,有了新的编程思路。在解决循环问题上有了新的解法。

图片描述

这篇关于【九月打卡】第18天【养成记】嵌入式挑战第18天,递归函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!