查看: 112|回复: 0

第45讲 C语言之《递归处理》

[复制链接]

4

主题

5

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2023-4-9 19:59:23 | 显示全部楼层 |阅读模式
24小时在线学习

各位同学们有需要提高编程技术水平、编程思维能力和动手开发实战能力。如:C/C++开发技术栈、考国家二级C语言、计算机考研C语言和数据结构、计算机C语言竞赛、蓝桥杯C语言竞赛、C语言期末考试、Windows 开发工程师、Qt开发工程师、MySQL技术、OpenCV技术、Linux服务器编程、Linux内核开发等等。现已推出最新课程,大家可以根据自己情况,选择适合自己的课程哦!点击下方的链接就可以在线学习啦,加油,加油,加油!
1、【C语言入门到精通】-学习视频教程
2、【C语言经典算法编程110道实战题】-学习视频教程
3、【数据结构算法(C语言版)】-学习视频教程
4、【C++语言入门到精通】-学习视频教程
5、【Windows高级工程师】-学习视频教程
将来的你一定会感谢现在拼命努力的自己,祝同学们学习进步、前程似锦!!!


一、C递归基础

递归指的是在函数的定义中使用函数自身的方法。
举个例子】:
从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?'从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'"
语法格式如下:
void recursion()
{
        statements;
        ... ... ...
                recursion(); /* 函数调用自身 */
        ... ... ...
}
int main()
{
        recursion();
}
流程图:


C 语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,否则会进入死循环。
递归函数在解决许多数学问题上起了至关重要的作用,比如计算一个数的阶乘、生成斐波那契数列,等等。
二、数的阶乘

下面的实例使用递归函数计算一个给定的数的阶乘:
【实例分析】
#include <stdio.h>
double factorial(unsigned int i)
{
    if (i <= 1)
    {
        return 1;
    }
    return i * factorial(i - 1);
}
int  main()
{
    int i = 15;
    printf("%d 的阶乘为 %f\n", i, factorial(i));

    return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:


三、斐波那契数列

下面的实例使用递归函数生成一个给定的数的斐波那契数列:
【实例分析】
#include <stdio.h>
int fibonaci(int i)
{
    if (i == 0)
    {
        return 0;
    }
    if (i == 1)
    {
        return 1;
    }
    return fibonaci(i - 1) + fibonaci(i - 2);
}

int  main()
{
    int i;
    for (i = 0; i < 10; i++)
    {
        printf("%d\t\n", fibonaci(i));
    }
    return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表